私のプログラムには、次のテンプレートの機能があります。
public MyObject myMethod() {
final MyObject[] myObject = new MyObject[]{null};
MyListener myListener= new MyListener() {
public void messageReceived(MyObject newData) {
// Thread #1
myObject[0] = newData;
}
}
...
// Thread #2
while (myObject[0] == null) ;
return myObject[0];
}
残念ながら、Java 64ビットの同期の原因に問題があります。スレッド#2はスレッド#1による変更を認識せず、whileループは終了しません。これらのスレッドをどのように同期する必要がありますか?
ありがとう!