java - Java 中的原子 boolean 值与同步 boolean 值

标签 java

我在一些多线程代码中遇到过这两个,并且想知道两者之间是否存在差异。

我的意思是使用 AtomicBoolean 而不是 SynchronizedBoolean 会产生 性能差异显着?

这会影响计算的正确性吗?

最佳答案

AtomicBoolean是标准java并发包的一部分。 SynchronizedBoolean是 Doug Lea(许多 java 并发包的作者)创建的一组实用程序的一部分。就性能而言,您应该期望 AtomicBoolean 表现更好——它使用 volatile boolean 值,而 SynchronizedBoolean 使用 ReadWriteLock。

然而,在实践中,对于大多数应用程序,您不会注意到太大的差异。

真正的区别(以及指导您选择的内容)在于这两个类提供的语义。 AtomicBoolean 仅提供简单的 set/get/compareAndSet 操作。 SynchronizedBoolean 提供原子 boolean 操作并公开其内部锁,以允许您在其值的上下文中执行 Runnables。

Doug Lea 已向社区免费提供此源代码。我找到了 SynchronizedBoolean 的扩展,WaitableBoolean特别有用,因为它允许您在发生特定状态更改时在锁内执行 Runnable。

关于java - Java 中的原子 boolean 值与同步 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925560/

相关文章:

java - 在循环内部或外部声明一个对象?

java - @StreamListener 未收到来自 kafka 主题的消息

java - JSP 更改未显示在 jBoss 中

java - 如何创建一个 android.util.Pair 对象数组?

java - 我可以在不更改 JPanel 和 JFrame 大小的情况下更改字体类型吗?

java - 从浏览器上传多个文件的最佳方式

java - 如何检查spark中的列数据类型

java - 判断输入是否为整数的简单方法?

java - 在构造函数中自动初始化 int messageID

java - Android 两个具有相同值的整数不正确相等