1.简介
reentrantLock和synchronized比较
(1)reentrantLock和synchronized都是独占锁,前者需要主动的加锁和释放锁,后者加锁解锁的过程会自动进行。
(2)reentrantLock和synchronized都是可重入的,前者加锁和释放锁的次数必须一致,否则会一直进入等待,后者不必担心最后是否释放了锁。
(3)reentranLock可以响应中断,synchronized不能响应中断,一个线程获取不到锁就一直等待。
(4)reentrantLock可以实现公平锁机制,就是等待时间最长的线程,可以优先获取锁。
(5)reentrantLock遇到异常不会释放锁,synchronized遇到异常会释放锁。
可重入概念
若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,可以再次进入并执行它(并行执行时,个别的执行结果,都符合设计时的预期),可以被中断的。
2.ReentrantLock使用
(1)简单使用
public class Demo {
private static Lock lock = new ReentrantLock();
public static void main(St