锁是一种工具,用于控制资源的并发访问
为什么synchronized不够用
1. 效率低: 锁的释放情况少、试图获得锁时不能设定超时、不能中断一个正在试图获得锁的线程
2. 不够灵活
3. 不知道是否能够获得锁
一、接口Lock.java
1. void lock()
2. void unlock()
3. boolean tryLock()
Lock lock = ...;
if (lock.tryLock()) {
try {
// manipulate protected state
} finally {
lock.unlock();
}
} else {
// perform alternative actions
}
4. boolean tryLock(long time, TimeUnit unit)
5. void lockInterruptibly()
6. Condition newCondition()