为什么不能重新启动Java Thread对象?

为什么不能重新启动Java Thread对象?,第1张

为什么不能重新启动Java Thread对象?

我知道不可能重新启动使用的Java Thread对象,但是我找不到为什么不允许这样做的解释。即使可以保证线程已完成(请参见下面的示例代码)。

我的看法是,线程可能直接绑定到实际的 本机 资源(出于效率或其他约束),而 本机
资源可以在某些 *** 作系统中重新启动,而在其他 *** 作系统中则不能重新启动。如果Java语言的设计者允许重新启动线程,则他们可能会限制可运行JVM的 *** 作系统的数量。

想到这一点,我想不出一个允许线程或进程在完成或终止后重新启动的 *** 作系统。当一个过程完成时,它就死了。您需要另一个,然后重新启动它。你永远不会复活

除了底层 *** 作系统所带来的效率和限制问题之外,还有分析和推理的问题。当事物是不可变的或具有离散的,有限的生命周期时,您可以考虑并发。就像状态机一样,它们必须具有终端状态。开始,等待,完成了吗?如果您允许线程复活,就很难轻易推断出类似的事情。

您还必须考虑重新线程的含义。重新创建其堆栈,其状态,是否可以安全地复活?您可以复活异常结束的线程吗?等等。

毛茸茸,太复杂。所有这些都是微不足道的收益。最好将线程保留为不可恢复的资源。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5490270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存