Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命令在不更改代码的情况下中断java进程中运行的挂起线程_Java_Multithreading_Kill - Fatal编程技术网

命令在不更改代码的情况下中断java进程中运行的挂起线程

命令在不更改代码的情况下中断java进程中运行的挂起线程,java,multithreading,kill,Java,Multithreading,Kill,我有一个java进程正在运行,不幸的是,进程中有一个线程挂起了 我找到了使用挂起的线程id,但是我找不到关于如何使用id中断此线程的任何参考 是否可以使用processId和ThreadId从控制台中断/停止线程(或者基本上在进程之外) 有没有关于如何解决这个问题的建议 PS:我不想终止进程,因为它只有一个挂起的线程。另外,我也不想更改代码来停止/中断线程。我只想杀死它,这样就可以释放它的所有资源。在JVM中没有任何方法可以杀死线程,至少不是故意实现的线程 话虽如此,如果您已经用适当的参数启动了

我有一个java进程正在运行,不幸的是,进程中有一个线程挂起了

我找到了使用挂起的线程id,但是我找不到关于如何使用id中断此线程的任何参考

是否可以使用processId和ThreadId从控制台中断/停止线程(或者基本上在进程之外)

有没有关于如何解决这个问题的建议


PS:我不想终止进程,因为它只有一个挂起的线程。另外,我也不想更改代码来停止/中断线程。我只想杀死它,这样就可以释放它的所有资源。

在JVM中没有任何方法可以杀死线程,至少不是故意实现的线程

话虽如此,如果您已经用适当的参数启动了JVM,以便可以启动到它的远程JMX会话,那么您实际上可以挂起该线程并向其中注入
RuntimeException
,这几乎肯定会终止它(除非您正在对其中的
RuntimeException
s执行异常操作)


另外,您永远不会在生产环境中启动JVM,允许恶意JMX连接,如果您不在生产环境中,我猜上述方法对您没有多大帮助。

您应该能够向进程发送SIGINT,所有线程都应该会收到。(这就是catch(InterruptedException ex)…)

据我所知,进程内运行的线程是应用程序的一部分。除非你有代码来处理/中断这样的线程,否则恐怕你只能终止进程。不,它不是
InterruptedException
。嗯,是的。我也遇到过这个解决方案,但我没有启用JMX连接,而且由于一些限制,我无法打开它。是否有一种方法可以使JMX连接只在特定的框中发生,而拒绝任何其他框中的连接?