考虑以下情况:
main() {
ClassA insA = new ClassA();
insA.run();
}
ClassA.run() {
for(;;) {
RMI.call();
blahblah();
}
}
RMI.call()
是一个 RMI 函数,它阻止线程使用Semaphore.acquire()
,直到发生某些事情(在另一个线程中)。
问题是:我怎样才能安全地杀死所有线程?
如下定义一个stop()
函数ClassA
:
stop() {
Thread.currentThread.interrupt();
}
并从外部(例如main()
)调用它不会中断 RMI 调用线程。
如何中断原始线程,以便正确退出代码?
还是有其他安全出口的方式?