一、死磕Java——StampedLock
StampedLock
是JDK1.8
新增的一种基于容量的锁,可以说是对ReentrantReadWriteLock
锁的一种补充,StampedLock
提供了三种模式的读写控制,简单说明如下:
- 写锁
writeLock
,是个排它锁或者叫独占锁,同时只有一个线程可以获取该锁。 - 悲观读锁
readLock
,是个共享锁,在没有线程获取独占写锁的情况下,同时多个线程可以获取该锁,如果已经有线程持有写锁,其他线程请求获取该读锁会被阻塞。 - 乐观读锁
tryOptimisticRead
。
1.1.StampedLock基本的使用
1.1.1.writeLock写锁
class MyNumData {
int num, age = 0;
StampedLock stampedLock = new StampedLock();
public void add(int x, int y) {
long stamp = stampedLock.writeLock();
try {
num += x;
age += y;
} finally {
stampedLock.unlockWrite(stamp);
}
}
}