盖章锁澄清。JAVA
这两种获取StampedLock锁的方法的唯一区别是:盖章锁澄清。JAVA,java,multithreading,locking,Java,Multithreading,Locking,这两种获取StampedLock锁的方法的唯一区别是: stampedLock.readLock(); stampedLock.tryOptimisticRead(); 当读锁被至少一个线程持有时,写锁不能接受它;而乐观读允许获得写锁?基本上是的 互联网上已经有很多关于这个主题的文字,但我会尝试给你们简要的理解 将尝试获取读锁,可能正在等待写锁结束。完成读取锁定后,必须使用unlockdead(long)解锁。锁不可重入。写锁必须等待独占访问,即所有读锁结束 不锁定,但返回表示请求
stampedLock.readLock();
stampedLock.tryOptimisticRead();
当读锁被至少一个线程持有时,写锁不能接受它;而乐观读允许获得写锁?基本上是的
互联网上已经有很多关于这个主题的文字,但我会尝试给你们简要的理解
将尝试获取读锁,可能正在等待写锁结束。完成读取锁定后,必须使用
unlockdead(long)
解锁。锁不可重入。写锁必须等待独占访问,即所有读锁结束
不锁定,但返回表示请求读取的点的非零戳记值。如果返回的值为零,则锁当前处于独占写入锁中,不等待写入锁结束。可以同时获得写锁并执行写操作。执行读取操作后,您可以通过
validate(long)
验证戳记是否仍然有效。如果true
则在此期间未获得写入锁定,您可以继续。一般来说,如果false
您将升级到readLock()
尝试使用实际的非独占锁再次读取
希望这有帮助。JavaDoc和JavaDoc是开始阅读的好地方
stampedLock.readLock();
stampedLock.tryOptimisticRead();