【发布时间】:2010-05-06 03:46:34
【问题描述】:
我有一个长时间运行的进程,由于错误,一个琐碎/可消耗的线程与我想继续的线程死锁,因此它可以执行一些难以在另一个线程中重现的最终报告方式。
当然,为以后的运行修复错误是正确的最终解决方案。当然,任何线程的任何此类强制中断/终止/停止本质上都是不安全的,并且可能导致其他不可预知的不一致。 (我熟悉所有标准警告及其原因。)
但是,由于唯一的选择是终止 JVM 进程并经历一个更冗长的过程,这将导致最终报告不太完整,因此混乱/已弃用/危险/有风险/一次性技术正是我所采用的想试试。
JVM 是 Ubuntu 上 Sun 的 1.6.0_16 64 位,消耗线程正在等待锁定对象监视器。
定向到确切线程的 OS 信号能否在可消耗线程中创建 InterruptedException?
是否可以附加gdb,直接篡改JVM 数据或调用JVM 过程允许强制释放消耗线程持有的对象监视器?
来自另一个线程的Thread.interrupt() 是否会从等待锁定帧中生成InterruptedException? (通过一些努力,我可以将任意 beanshell 脚本注入到正在运行的系统中。)
是否可以通过 JMX 或任何其他远程注入方法发送已弃用的 Thread.stop()?
任何想法都受到赞赏,越“危险”越好!而且,如果您的建议在类似情况下的个人经验中奏效,那就最好了!
【问题讨论】:
标签: java synchronization gdb deadlock interrupted-exception