start
変数がtrue
次のようになるまで処理を開始しないバックグラウンド スレッドがあります。
class MyBackgroundThread implements Runnable {
// ...
public void run() {
while(true) {
if(!start) continue;
doSomethingWith(myValue);
}
}
}
もちろんイベントディスパッチスレッドで実行されてstart
いるボタンをクリックすると、変数はtrueに設定されます。ボタンをクリックして設定されるバックグラウンド スレッド クラスにJFrame
もフィールドがあります。myValue
startBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
backgroundThreadInstance.setMyValue(100);
backgroundThreadInstance.setStart(true);
// ...
}
});
ご覧のとおり、myValue
に設定start
する前に に何かを割り当てていtrue
ます。myValue
とstart
as の設定volatile
は不要ということですか?が最初に書き込まれるため、 ismyValue
の前にバックグラウンド スレッドにリークされるため、バックグラウンド スレッドは初期化されていない?start
を処理する機会がありません。myValue