我实际上正在寻找一种更简单的方法来杀死线程,无论线程在哪里运行。但是互联网上的大多数解决方案都指向我使用布尔标志来控制线程的执行,如果我想停止线程然后将布尔变量设置为 false。
但是,如果可运行的任务是一个 LONG 线性任务,这意味着该任务不重复怎么办?在这种情况下,创建一个“while”循环来覆盖整个任务块并不容易。
使用 Thread.stop 真的很诱人,但警告“已弃用”似乎使用起来很危险。我已通读这篇文章 为什么不推荐使用 Thread.stop、Thread.suspend、Thread.resume 和 Runtime.runFinalizersOnExit?
但我无法理解
如果以前受这些监视器保护的任何对象处于不一致状态,则其他线程现在可能会查看这些处于不一致状态的对象。据说这些物体已损坏。
“不一致的状态”是什么意思?如果有人可以对此进行解释,我将不胜感激。
我想将我的问题扩展到更低级别的视图,比如说i = i + 1;
在 JVM(可能是汇编语言)中,也许这个 Java 语句会被分成几个更小的指令,例如move i ; add i ; get i into memory 0x0101
(这是一个例子!我完全不知道)不懂汇编语言!)
现在,如果我们调用thread.stop,它实际上会停在哪里?线程会在完成 Java 语句后停止,还是可能处于“汇编语言”的中间?如果答案是第二个,难道是我们说的理由
据说这些物体已损坏。
?
好的,我的问题有点困惑,希望有人能理解和解释。提前致谢。