本文参考葛一鸣《Java高并发程序设计》
多线程的团队协作:同步控制
synchronized的功能扩展:ReentrantLock重入锁
java.util.concurrent.locks.ReentrantLock重入锁可以完全替代synchronized关键字。与synchronized先比,重入锁有着显示的操作过程,必须手动指定何时加锁,何时释放锁。
-
中断响应
使用synchronized关键字,如果一个线程在等待锁,在获得锁之前会继续保持等待。
使用重入锁,线程可以被中断,即在等待锁的过程中,程序可以根据需要取消对锁的请求。 -
锁申请等待限时
除了接收外部通知中断,还可以设置申请等待时长,使用tryLock()方法