0

如果我有一个持有由 setter 和 getter 方法公开的私有布尔值的类,如果我想从不同的线程读取和写入该布尔值,我是否必须将这些方法设置为同步?

4

3 回答 3

3

对简单值的同步访问通常是不必要的。通常,您只需要标记volatile限制较少且信息较多的内容。

这在很大程度上取决于您如何访问该值。

在某些情况下,使用 anAtomicBoolean可能是最好的方法。这为volatile.

有关更多详细信息,请参阅问题Java: volatile boolean vs AtomicBoolean问题。

于 2013-03-31T22:50:25.673 回答
2

看看里面的类java/util/concurrent/atomic可能对你有用。比如AtomicBoolean

于 2013-03-31T22:55:18.267 回答
0

是的,使 setter 和 getter 同步是一个好主意。读取或写入布尔值不是原子命令,因此在极少数情况下它可能会给您带来一些问题。(您无法确定您是从 RAM 中读取还是从 Cashe 读取)。除非它是易变的。

于 2013-03-31T22:50:23.400 回答