邮戳锁(StampedLock)是一个java.util.concurrent.locks包下实现了Serializable(序列化)接口的类,如下所示,JDK1.8中新增的一个读写锁:
public class StampedLock implements java.io.Serializable {...
}
StampedLock提供三种模式的锁:分别为写锁、悲观读锁、乐观读锁,使用StampedLock每次获得锁之后都会得到一个stamp值,是一个long类型的数字。
StampedLock不同类型的锁的资源共享情况如下:
- 写写互斥
- 读写互斥
- 读读共享
writeLock是排它锁、不可重入锁、也叫独占锁,相同时间只能有一个线程可以获取锁,其它线程请求读锁和写锁都会被阻塞。writeLock与unlockWrite必须成对使用,解锁时必须需要传入相对应的stamp值才可以释放锁。
import java.util.concurrent