ReentrantLock 和 synchronized 区别
synchronized 原语和 ReentrantLock 在一般情况下没有什么区别,但是在非
常复杂的同步应用中,请考虑使用 ReentrantLock,特别是遇到下面 2 种需求的
时候。
1.某个线程在等待一个锁的控制权的这段时间需要中断
2.需要分开处理一些 wait-notify,ReentrantLock 里面的 Condition 应用,能够控
制 notify 哪个线程
3.具有公平锁功能,每个到来的线程都将排队等候
3. ReentrantLock 可中断 可超时尝试非阻塞加锁,尝试超时加锁,尝试可相应
中断加锁
4. ReentrantLocklock():获取锁,如果锁被暂用则一直等待
unlock():释放锁
tryLock(): 注意返回类型是 boolean,如果获取锁的时候锁被占用就返回 false,
否则返回 true
tryLock(long time, TimeUnit unit):比起 tryLock()就是给了一个时间期限,保
证等待参数时间
lockInterruptibly():用该锁的获得方式,如果线程在获取锁的阶段进入了等待,
那么可以中断此线程,先去做别的事