这是我的问题:我有一个对话框,其中包含一些用户可以更改的参数(例如通过微调器).每次更改其中一个参数时,我都会根据新参数值启动一个线程来更新3D视图.如果用户在第一个线程工作时更改了另一个值(或者通过在微调器箭头上单击多次再次返回相同的值),我想中止第一个线程(以及更新3D视图)并启动一个新线程使用最新的参数值.
我怎么能这样做?
PS:run()我的线程方法中没有循环,因此检查标志不是一个选项:更新3D视图的线程基本上只调用一个执行时间很长的方法.我无法在此方法中添加任何标志,要求中止,因为我无法访问其代码.
一个在第三方库的bug导致在我的JBoss的实例的工作线程无限循环.你知道如何在不重新启动服务器的情况下杀死这个"卡住"的线程吗?我们希望能够从此恢复直到部署修复程序,最好不必重新启动.
我见过一些人提到使用Thread.interrupt() - 如果我要编写自己的MBean代码,为了打断它,我怎样才能获得有问题的线程的句柄?
更新:无法使用任何这些方法解决.我确实遇到了另一个关于同一问题的线程,该问题有一个链接到为什么不推荐使用Thread.stop().其他人也提出了类似的问题并得到了类似的结果.似乎更复杂的容器应该提供这种健康机制,但我猜他们的手与JVM绑在一起.