当前位置:  开发笔记 > 编程语言 > 正文

Java线程:是否可以从同一JVM上运行的不同java程序查看/暂停/终止特定线程?

如何解决《Java线程:是否可以从同一JVM上运行的不同java程序查看/暂停/终止特定线程?》经验,为你挑选了1个好方法。

我有一个运行不同线程的程序'foo',fooT1,fooT2,... fooTn.

现在,如果我想写另一个程序'bar',这可能会杀死线程fooTr,那可能吗?

原因:其中一个线程fooTr跟踪产品许可证.如果这个线程被杀死; 一个人可以无限期地运行这个产品.杀死'foo'本身是可以容忍的'foo',因为这正是许可证到期时所做的.

系统:Linux的Fedora发行版

注意:启动JVM和程序foo的命令放在/etc/init.d中,任何对rc.1/rc.2/rc.3结构有相当了解的人都可以更改/添加起始参数.

我希望我的问题很明确.如果没有,我总是可以编辑它.



1> l0st3d..:

实际上,java调试器将允许您通过向其中注入异常来终止线程.当我遇到这个问题时,我只是想弄清楚如何使用这个功能来杀死一个线程而不会消灭整个jvm.如果使用命令行选项运行jvm,例如:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 your.app.Main

并将调试器与以下内容连接:

jdb -attach 127.0.0.1:8888

你可以输入:

threads

获取正在运行的线程列表,并使用kill命令终止正在运行的线程.我目前不确定的是这个kill命令的语法,我试过了显而易见的:

kill 0xe2e new java.lang.IllegalArgumentException("er");

我收到消息:

killing thread: Swank REPL Thread
Thread not suspended
Expression must evaluate to an object

("Swank REPL Thread"是我要杀死的主题,是的,我尝试先暂停它;)

我仍然无法使用java调试器,它看起来像一个线程可以随机杀死.也许你可以确保你忽略所有异常并继续运行,这就足够了,但我不确定.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有