Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
盖章锁澄清。JAVA_Java_Multithreading_Locking - Fatal编程技术网

盖章锁澄清。JAVA

盖章锁澄清。JAVA,java,multithreading,locking,Java,Multithreading,Locking,这两种获取StampedLock锁的方法的唯一区别是: stampedLock.readLock(); stampedLock.tryOptimisticRead(); 当读锁被至少一个线程持有时,写锁不能接受它;而乐观读允许获得写锁?基本上是的 互联网上已经有很多关于这个主题的文字,但我会尝试给你们简要的理解 将尝试获取读锁,可能正在等待写锁结束。完成读取锁定后,必须使用unlockdead(long)解锁。锁不可重入。写锁必须等待独占访问,即所有读锁结束 不锁定,但返回表示请求

这两种获取StampedLock锁的方法的唯一区别是:

  stampedLock.readLock();
  stampedLock.tryOptimisticRead();
当读锁被至少一个线程持有时,写锁不能接受它;而乐观读允许获得写锁?

基本上是的

互联网上已经有很多关于这个主题的文字,但我会尝试给你们简要的理解


将尝试获取读锁,可能正在等待写锁结束。完成读取锁定后,必须使用
unlockdead(long)
解锁。锁不可重入。写锁必须等待独占访问,即所有读锁结束


不锁定,但返回表示请求读取的点的非零戳记值。如果返回的值为零,则锁当前处于独占写入锁中,不等待写入锁结束。可以同时获得写锁并执行写操作。执行读取操作后,您可以通过
validate(long)
验证戳记是否仍然有效。如果
true
则在此期间未获得写入锁定,您可以继续。一般来说,如果
false
您将升级到
readLock()
尝试使用实际的非独占锁再次读取

希望这有帮助。JavaDoc和JavaDoc是开始阅读的好地方

stampedLock.readLock();
stampedLock.tryOptimisticRead();