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

标签 linux multithreading executable-jar

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

Start.java 生成 3 个子线程。如何终止启动线程和子线程?

这是Start.java

public class Start {

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

ListenersManager、PollPatientPortalManager 和 PollHISManager 都扩展了 Thread

最佳答案

起始线程是线程。要“杀死”它,您只需从 main() 返回即可。

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

正确的解决方案是定义一个线程不时检查的“信号”(如共享标志)。要阻止它们,请发送信号。

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

相关:

关于linux - 在可运行的 jar 中停止子线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24823857/

相关文章:

java - 为什么线程在不同的运行方法体中表现不同?

multithreading - 哪个线程用于音频解码?

java - jar 文件是否即时解压

java - 无法在 Debian 服务器中运行 jar 文件

linux - Mac 上的 Docker 分离了内部和外部文件所有权;在 Linux 上不是这样

linux - Cloudera中的.bash_profile在哪里?

linux - Linux上TCP重传的应用控制

javascript - 通过网络将系统音频流式传输到 Web 浏览器 (javascript)

java - 当线程改变状态时会发生上下文切换吗?

Scala-Redis 库不包含在 fat jar 文件中