在我们的应用程序(用 Java 为 Android 编写)中,我们有一个Thread
包含 int 字段的派生类:
public class MyThread extends Thread {
public int myValue = 0;
public void doWork() {
while (true) {
System.out.println(myValue);
}
}
}
// On some other thread
myThread.myValue = 42;
该类MyThread
仅从int 字段读取,而我希望另一个线程写入它(如上面的示例中所示)。
据我所知,Java 中的 int 等原始类型是原子读/写的。
我应该保护对这个 int 字段的访问(使用synchronized
关键字)吗?
我在这里读到,根据 Java 内存模型,如果没有显式通信,甚至可能看不到对几个线程共享的内存的更新
Quote: 没有明确的通信,你不能保证哪些写入被其他线程看到
我应该保护对这个字段的访问,还是另一个线程可以(原子地)更新它而不需要任何修改?