whileループがロックを無期限に盗むため、次のコードが機能しないことがわかりました。
public void run()
{
while(true)
{
synchronized(run)
{
if (!run) break;
[code]
}
}
}
public void stopRunning()
{
synchronized(run)
{
run = false;
}
}
私の目標は、run()関数が実際に実行されていないことがわかるまで、stopRunning()コマンドから戻らないようにすることです。run関数が、破棄中の他のものを参照し続けるのを防ごうとしています。私が最初に考えたのは、同期(実行)の前にThread.sleep(100)などのコード行を追加して、ロックが確実に解除されるようにすることです。これは推奨される方法ですか、それとも[愚かな/明白な]何かを見落としていますか?
ありがとう!