考虑以下情况:
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调用线程。
如何中断原始线程,以便正确退出代码?
或者安全退出任何其他方式?