在多线程环境中访问布尔值

时间:2013-03-31 22:35:34

标签: java android multithreading

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

3 个答案:

答案 0 :(得分:3)

通常不需要同步访问简单值。通常,您只需要标记volatile,这样可以减少限制并提供更多信息。

这完全取决于您如何访问该值。

在某些情况下,使用AtomicBoolean可能是最好的方法。这为volatile提供了略微不同的保证。

有关详情,请参阅问题Java: volatile boolean vs AtomicBoolean问题。

答案 1 :(得分:2)

查看java/util/concurrent/atomic中的课程可能对您有用。例如AtomicBoolean

答案 2 :(得分:0)

是的,让setter和getters同步是一个好主意。读取或写入布尔值不是原子命令,因此在极少数情况下,它可能会导致一些问题。 (你不能确定你是否阅读RAM或cashe)。除非它是不稳定的。