在RMI调用中中断被阻塞的线程

时间:2012-05-28 13:24:20

标签: java multithreading rmi

考虑以下情况:

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

如何中断原始线程,以便正确退出代码?
或者安全退出任何其他方式?

1 个答案:

答案 0 :(得分:0)

检查此库:http://java.net/projects/interruptiblermi。 线程#interrupt()无效。