在可运行的jar中停止子线程

时间:2014-07-18 11:21:37

标签: linux multithreading executable-jar

我有一个可运行的jar文件,我在其中运行Start.java文件。

Start.java产生3个子线程。如何杀死Start线程&孩子的线程?

这是Start.java

public class Start {

    public static void main(String[] args){
        ListenersManager.start();
        PollPatientPortalManager.start();
        PollHISManager.start();
    }
}

ListenersManager,PollPatientPortalManager& PollHISManager全部扩展Thread

1 个答案:

答案 0 :(得分:1)

起始线程是main线程。要杀死"它,你只需要从main()返回。

对于其他主题,您可以在其上调用.destroy().stop()。请注意,这些方法很粗糙,可能会导致错误(这就是他们被弃用的原因)。

正确的解决方案是定义一个"信号" (像共享标志一样)线程偶尔检查一次。要阻止它们,请发送信号。

要从命令行终止所有线程,只需终止该进程(参见man kill)。

相关: