別のスレッド B を実行するスレッド A があります。スレッド A は、スレッド B をきれいに終了しようとするメソッド「stopExec()」を実装し、いくつかのタスクを終了できるようにします。したがって、私の stopExec メソッドは次のようになります。
private CountDownLatch lock;
public void stopExec() {
lock = new CountDownLatch(1);
threadB.finish();
try {
lock.await();
} catch(InterruptedExcetion ie) {
Log.d(null, "Thread A not locked.");
}
Log.d(null, "Finished.");
}
スレッド B にはスレッド A への参照があり、「threadA.lock.countDown();」を呼び出します。それが何をしていたとしても終わったとき。
例外がスローされるとどうなりますか...スレッドAは待機せず、単に続行します。誰かが私になぜ/何が間違っているのか説明してもらえますか. 他のケースでも同様の方法で CountDownLatch を使用しましたが、期待どおりに機能しています。
ありがとうございました!