当前位置: 首页 > 图灵资讯 > 技术篇> 共享锁和独占锁

共享锁和独占锁

来源:图灵教育
时间:2023-06-28 14:19:45

Java并发包提供的加锁模式分为共享锁和独占锁。

独占锁

独占锁模式下,每次只能有一个线程能持有锁,ReentrantLock就是以独占方式实现的互斥锁。独占锁是一种悲观保守的加锁策略,它避免了读/读冲突,如果某个只读线程获取锁,则其他读线程都只能等待,这种情况下就限制了不必要的并发性,因为读操作并不会影响数据的一致性。

共享锁

共享锁则允许多个线程同时获取锁,并发访问共享资源,如:ReadWriteLock。共享锁则是一种乐观锁,它放款了加锁策略,允许多个执行读操作的线程同时访问共享资源。

1.AQS的内部类Node定义了两个常量SHARED和EXCLUSIVE,它们分别标识AQS队列中等待线程的锁获取模式。

2.Java的并发包中提供了ReadWriteLock,读-写锁。它允许一个资源可以被多个读操作访问,或者被一个写操作访问,但两者不能同时进行。

上一篇:

线程的基本方法

下一篇:

Java锁