加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Java杀死正在运行的VM(JBoss Instance)上的线程?

发布时间:2020-12-15 00:44:28 所属栏目:Java 来源:网络整理
导读:一个 bug in a third party library在我的JBoss实例上的工作线程中导致无限循环.你知道如何在不重新启动服务器的情况下杀死这个“卡
一个 bug in a third party library在我的JBoss实例上的工作线程中导致无限循环.你知道如何在不重新启动服务器的情况下杀死这个“卡住”的线程吗?我们希望能够从此恢复直到部署修复程序,最好不必重新启动.

我见过一些人mention using Thread.interrupt() – 如果我要编写自己的MBean代码,我怎么能得到一个有问题的线程来处理它以便中断呢?

更新:无法使用任何这些方法解决.我确实遇到了another thread about the same issue,它有一个链接到为什么Thread.stop() is deprecated.其他人有asked a similar question有类似的结果.似乎更复杂的容器应该提供这种健康机制,但我猜他们的手与JVM相关联.

解决方法

我在第三方库中遇到了类似的错误(无限循环).我最终自己应用了修复程序(等待来自第三方lib的人来修复它们的混乱)然后我将修改后的.class放在我的.war中,确保它在伪造之前加载.class(伪造的在伪造的第三方.jar).

这不好但是有效,请看我的问题:

Order of class loading from a .war file

我的意思是:如果你必须等待负责第三方窃听lib的人修理他们的东西,你可能会等待很长时间.我们买不起.我们需要尽快修复.所以我们最终对他们的代码应用补丁/黑客.

例如,你可以在无限循环中添加一个布尔检查,然后当你希望虚假线程“死”时强制循环退出.

请注意,我已经十年没用过不推荐使用的Thread stop()了,我真的不想在上面的例子中使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读