ReentrantLock
ReentrantLock 是一个可重入的互斥锁,它提供了比 synchronized 关键字更灵活的锁机制。它属于 java.util.concurrent.locks 包。
特点:
- 可重入性:同一个线程可以多次获取锁而不会造成死锁,锁的计数器会递增。
- 公平性:可以选择公平锁和非公平锁。公平锁会确保线程以请求锁的顺序获取锁,而非公平锁可能会导致“饥饿”现象,即某些线程可能会比其他线程更早获得锁。
- 尝试锁:支持尝试获取锁的方法,如 tryLock(),这使得线程可以在没有成功获取锁的情况下继续执行其他任务。
- 中断:可以响应中断操作,允许线程在等待锁时被中断。
- 定时锁:支持定时锁定方法 tryLock(long time, TimeUnit unit),允许线程在指定时间内尝试获取锁。