Java 如何终止由中断第三方线程创建的等待线程

Java 如何终止由中断第三方线程创建的等待线程,java,multithreading,text-to-speech,interrupt,interrupt-handling,Java,Multithreading,Text To Speech,Interrupt,Interrupt Handling,我相信我已经研究过类似问题的答案,但没有找到我的具体问题的答案 我使用的是Java第三方的开源文本到语音软件,当我取消和/或中断文本到语音消息时,TTS线程的子线程处于等待状态。使用JConsole,我可以找到每个等待线程的消息,如: 堆栈跟踪: sun.misc.Unsafe.park(本机方法) java.util.concurrent.locks.LockSupport.park(未知源) java.util.concurrent.locks.AbstractQueuedSynchroni

我相信我已经研究过类似问题的答案,但没有找到我的具体问题的答案

我使用的是Java第三方的开源文本到语音软件,当我取消和/或中断文本到语音消息时,TTS线程的子线程处于等待状态。使用JConsole,我可以找到每个等待线程的消息,如:

堆栈跟踪: sun.misc.Unsafe.park(本机方法) java.util.concurrent.locks.LockSupport.park(未知源) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(未知源) java.util.concurrent.ArrayBlockingQueue.put(未知源)

是否有一种方法可以在安全级联所有其他子线程的停止时中断或取消线程

我已经试验过ExecutorService、守护进程线程和同步逻辑


如果你有任何建议,请告诉我。谢谢。

如果您有该线程的引用,您可以直接
interrupt()
。不过,这并不一定意味着它会真正停止正在做的事情。编写它的人可以忽略任何中断状态,抛出
InterruptedException
s等。这是来自第三方的文本语音转换软件中的错误。他们应该释放线程,因为他们不需要它们。报告一个错误。寻找关闭或销毁方法。可能有一些闭包方法没有被正确调用。你可以根据下面的步骤得到等待线程的列表。