Lock
主要有4个方法:lock()、tryLock()、tryLock(long time, TimeUnit unit)和lockInterruptibly()。注意Lock不像synchronized一样在异常时自动释放锁,因此需要在finally中解锁——unlock()。
- lock()
该方法不能被中断,一旦陷入死锁就会陷入永久等待。 - tryLock()
用来尝试获取锁,如当前锁没有被其他线程占用,则获取成功返回true,否则返回false代表获取锁失败。 - tryLock(long time, TimeUnit unit)
同上,区别就在于设置超时时间。
/**
* 用tryLock()方法避免死锁
*/
public class ReentrantLockByTryLock implements Runnable {
private static final Lock reentrantLock1 = new