2

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

我的意思是使用 AtomicBoolean 而不是 SynchronizedBoolean 是否会对性能产生显着影响?

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

4

1 回答 1

4

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

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

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

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

于 2012-10-17T01:02:22.440 回答