java - ThreadDeath 上的线程生命周期

标签 java multithreading lifecycle terminate cancellation

我想开始一个计算并在用户取消时终止它。你说调用 Thead.stop() 解锁所有监视器并引发 ThreadDeath 异常。这意味着 finally 仍然被调用。

假设我不关心锁但想释放到目前为止分配的资源。我希望取消器知道/等到线程完成释放其分配。假设 finally 部分在 finally 部分有一个无限循环。 thread.join 会成功连接到该线程吗?

最佳答案

这取决于在抛出 ThreadDeath 时线程正在执行什么代码。例如,如果您的线程恰好在到达 finally block 的顶部时停止,那么您可能会遇到这样一种情况,即在进入该 block 之后但在资源关闭之前抛出 ThreadDeath,并且该 finally block 不会完全的。

使用中断会更不容易出错,这让被中断的线程可以完全控制它如何完成和关闭它的资源。

关于java - ThreadDeath 上的线程生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195300/

相关文章:

java - 有没有办法在 HOCON 中将节点向上移动?

java - 组合 OHLC 图表中的对齐

java - Rhino Script Engine 的生命周期和并发语义是什么

java - 将新的列属性添加到 shapefile 并使用 Geotools Java 将其保存到数据库

java - 如何在单击另一个 Jbutton 时更改 Jbutton 的功能?

multithreading - clojure 中用于并发的消息传递模型

multithreading - WinForms App 中的 F# 跨线程 UI 异常

java - 我应该使用 DefaultEventExecutorGroup 还是自定义 Java Executor?

lifecycle - 你怎么知道什么时候关闭一个项目?

android - 共享偏好不节省值(value)