我当前正在运行无法更改的 JAR,有时它会无缘无故地卡住。我尝试过寻找中断线程、停止线程等的方法,但没有运气。
提供的每个解决方案都是关于完全退出或等待线程完成。
我想要做的是简单地在超时完成时关闭线程,然后继续执行程序。
我不想做的是使用带有超时、java.util.concurrent.Future、System.exit 的 while 循环,并进行 Thread.interrupt 调用。
这些都没有帮助!
最佳答案
您不能在执行过程中强行停止线程。 Thread.destroy()
方法本来可以做到这一点,但它从未实现,并且其文档解释了为什么即使它有效,使用它也是不安全的。
还有一些其他已弃用的方法,例如 Thread.stop()
和 Thread.suspend()
这可能确实有效,但使用起来也不安全;他们的文档再次解释了原因。
告诉线程它应该自行终止,然后等待它这样做,是停止线程的唯一安全方法。
<小时/>作为解决方法,您可以在完全独立的 process 中运行任务。 ,这样您就可以destroy当你想让它停止时就开始。这是安全的,因为进程彼此隔离,并且销毁子进程不会使父进程处于不稳定状态。
不过,与单独的进程交互更加困难,因为您无法像线程那样在进程之间共享变量。您需要通过进程的输入和输出流发送消息。
关于java - 关闭第三个应用程序线程而不等待其完成的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43158050/