如果我有一个只有一个这样的语句的 getter 方法
public class NumberClass{
int number;
public int getNumber() {
return number;
}
...
}
并且多个线程访问此方法,我是否必须同步此方法,或者因为它只有一条语句而没有必要??
最佳答案
I have to synchronize this [get] method or it is not necessary since it has only one statement??
它与 1 个或多个语句无关。这取决于该值是否已在另一个线程中更新,以及您是否希望所有线程看到一致的值。
如果 number
字段在线程 1 中更新,则线程 2 可能会获取原始值或新值,具体取决于更新的同步方式。要正确发布值,set 和 get 方法都需要同步
。
如果您只是尝试共享 int
值,那么将 number
字段标记为 volatile
就可以了,或者使用 AtomicInteger
在多个线程之间可靠地共享值可能更合适。
private volatile int number;
或使用:
private AtomicInteger number = new AtomicInteger();
关于java - 单条语句同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9669677/