我有一个线程 A 运行另一个线程 B。线程 A 实现了一个方法“stopExec()”,它试图干净地退出线程 B - 允许它完成一些任务。所以我的 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,它按预期工作。
谢谢!