ThreadDeath 上的线程生命周期
Thread lifecycle on ThreadDeath
我想开始计算并在用户取消时终止计算。你说调用 Thead.stop()
解锁所有监视器并引发 ThreadDeath
异常。这意味着 finally
仍然被调用。
假设我不关心锁但想释放目前分配的资源。我希望取消器 know/wait 直到线程完成释放其分配。假设 finally 部分在 finally 部分有一个无限循环。 thread.join
会成功处理该线程吗?
这取决于在抛出 ThreadDeath 时线程正在执行什么代码。例如,如果您的线程恰好在到达 finally 块的顶部时停止,那么您可能会遇到这样一种情况,即在进入该块之后但在资源关闭之前抛出 ThreadDeath,并且该 finally 块不会完全的。
使用中断会更不容易出错,这让被中断的线程可以完全控制它如何完成和关闭它的资源。
我想开始计算并在用户取消时终止计算。你说调用 Thead.stop()
解锁所有监视器并引发 ThreadDeath
异常。这意味着 finally
仍然被调用。
假设我不关心锁但想释放目前分配的资源。我希望取消器 know/wait 直到线程完成释放其分配。假设 finally 部分在 finally 部分有一个无限循环。 thread.join
会成功处理该线程吗?
这取决于在抛出 ThreadDeath 时线程正在执行什么代码。例如,如果您的线程恰好在到达 finally 块的顶部时停止,那么您可能会遇到这样一种情况,即在进入该块之后但在资源关闭之前抛出 ThreadDeath,并且该 finally 块不会完全的。
使用中断会更不容易出错,这让被中断的线程可以完全控制它如何完成和关闭它的资源。