1

考虑以下情况:

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 调用线程。

如何中断原始线程,以便正确退出代码?
还是有其他安全出口的方式?

4

1 回答 1

0

检查这个库:http: //java.net/projects/interruptiblermi。Thread#interrupt() 将无济于事。

于 2012-05-28T13:29:15.467 回答