如果我有一个持有由 setter 和 getter 方法公开的私有布尔值的类,如果我想从不同的线程读取和写入该布尔值,我是否必须将这些方法设置为同步?
问问题
3309 次
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 回答