目标: 大致介绍一下
java.util.concurrent.locks包下的类, 接口 及其常用方法
1. Lock 接口
Lock接口
使用
Lock接口的最佳模式:
public void method() throw InterruptedException {
try {
lock.lock(); // lock.lockUninterruptibly();
} finally {
lock.unlock();
}
}
用户必须手动释放Lock锁(发生异常时不会自动释放Lock锁), 因为Lock锁并不是JVM原生支持的, 而是JDK提供的功能;
2. ReentrantLock 类(实现Lock接口的类)(互斥锁)
ReentrantLock是唯一实现了Lock接口的类,并且ReentrantLock类提供了更多的方法;
-
构造方法
ReetrantLock类的构造方法
公平锁 与 非公平锁
公平锁 表示 线程获取锁的顺序是按照线程加锁的顺序来分配的, 即先来先得的FIFO先进先出顺序;
非公平锁 是 一种获取锁的抢占机制, 是随机获得锁的, 和公平锁不一样的就是先来的不一定先得到锁;
-
其他新增方法(9个)
ReentrantLock类的新增方法
ReentrantLock类的新增方法
3. Condition 接口
Condition接口方法详解
4. ReadWriteLock 接口 和 ReentrantLockReadWriteLock 类
- 读写锁表示也有两个锁, 一个是读操作相关的锁, 称为共享锁; 另一个是写操作相关的锁, 称为排他锁;
- 多个读锁之间不互斥, 读锁与写锁互斥, 写锁与写锁互斥
ReadWriteLock接口
ReentrantReadWriteLock类实现了ReadWriteLock接口, 其api与ReentrantLock类的api接口保持一致;













网友评论