上文中讲到了ReadWriteLock这种读写锁方法作为缓存策略那么有没有效率更高的方法
重点方法
long stamp = stampedLock.tryOptimisticRead();//乐观锁
long stamp = stampedLock.readLock(); //悲观读锁
long stamp = stampedLock.writeLock();//主观读锁
boolean hasWriteLock = stampedLock.validate();//如果有写锁返回false如果没有返回true
如下面的代码先通过tryOptimisticRead获取一个stamp这个操作是没有锁的,这中间可以读取变量,然后在调用validate方法校验是否有写锁,如果有,将锁升级成读锁。如果没有直接返回。因为没有写锁时候是不加锁的所以效率很高。这点很类似咱们mysql的乐观锁。
1 | public long read() { |