私たちのアプリ (Java for 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 などのプリミティブ型はアトミックに読み書きされます。
synchronized
この int フィールドへのアクセスを (キーワードを使用して) 保護する必要がありますか?
Java メモリ モデルによると、いくつかのスレッドによって共有されるメモリへの更新は、明示的に伝達されない限り、見られない可能性があることをここで読みました。
引用:明示的な通信がなければ、他のスレッドがどの書き込みを認識できるかを保証できません
このフィールドへのアクセスを保護する必要がありますか、それとも別のスレッドで必要な変更を行わずに (原子的に) 更新できますか?