java-在Terracotta中可以安全使用“脏读”吗?
作者:互联网
“脏读取”,意味着即使对象被另一个线程写锁定,也要读取它的值,在Terracotta网站上的值为described,但我听说即使您不关心它们的可能性也不应使用它们脏读锁定对象时可能会得到旧数据.
有没有人有在Terracotta中使用脏读的经验,如果您不关心读取旧值的可能性,他们是否可以安全使用?
解决方法:
脏读是脏读.分布/群集的Terracotta仅增加了在没有适当同步的情况下读取访问的共享可变状态的旧值的可能性.
您应该注意,在Java 5中的内存模型下,如果不使用适当的同步,就不能保证读取更新后的值.兵马俑可能决定利用这种可能性.实际上,任何JVM都可以随意使用它.即使它可能在您的计算机上运行,也可能在其他计算机上损坏.它可能在JVM的次要更新时中断,并且可能在不同CPU上针对同一JVM的相同版本而中断.
考虑到这一点,您可以说脏读取在任何JVM中都是不安全的…除非您不介意您永远无法读取其他线程进行的更新的可能性-一种不太可能的情况,但是这有可能发生.
此外,当您实际访问Terracottas Wiki的链接时,它表示该文章已被删除,并且不建议使用该模式.
标签:terracotta,cluster-computing,java 来源: https://codeday.me/bug/20191108/2004982.html