gpt4 book ai didi

java - 在 Java 中杀死正在运行的 VM(JBoss 实例)上的卡住线程?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:55 26 4
gpt4 key购买 nike

A 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 束缚住了。

最佳答案

我在第 3 方库中有一个类似的错误(无限循环)。我最终自己应用了修复(同时等待来自第 3 方库的人修复他们的困惑)然后我将修改后的 .class 放入我的 .war,确保它在伪造的 .class 之前加载(伪造的在伪造的第 3 方 .jar 中)。

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

Order of class loading from a .war file

我的意思是:如果您必须等待负责第 3 方漏洞库的人员修复他们的东西,您可能会等待非常很长时间。我们负担不起。我们需要尽快修复。所以我们最终对他们的代码应用了补丁/破解。

例如,您可以在无限循环内添加一个 boolean 检查,然后在您希望虚假线程“死亡”时强制退出循环。

请注意,十年以来我一直没有使用已弃用的 Thread stop(),我真的不想在上述情况下使用它。

关于java - 在 Java 中杀死正在运行的 VM(JBoss 实例)上的卡住线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com