gpt4 book ai didi

java - 替代 Thread.suspend() 和 .resume()

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:20 25 4
gpt4 key购买 nike

我有一大段代码不是循环,只是执行一次但需要一些时间的命令列表。我需要它根据不断变化的 boolean 值随时暂停或终止它。我可以使用不同的线程来挂起、恢复和停止此代码,但这些方法已被弃用,因此我想避免使用它们。我可以检查每一行代码之间的 boolean 值,但我希望有一个更优雅的解决方案。有什么好的方法吗?

最佳答案

I could check the boolean between every line of code, but I am hoping for a more elegant solution. Is there a good way to do this?

很遗憾,没有。

要替换暂停/恢复,您真正需要的是让一个线程“暂停”另一个线程,而不涉及第二个线程的代码。

按照目前的规范和实现,这在 Java 中是不可能安全地完成的。

已弃用的 Thread 方法是一个线程杀死、停止/暂停、恢复另一个线程的唯一方法……如果另一个线程没有积极合作。它们被弃用是因为(简而言之)这种控制不能在任何当前一代主流 JVM1 中安全地实现。

您能做的最好的事情是将暂停/恢复逻辑包装在第二个线程在适当的点调用的方法中。 (这可能应该使用 wait/notify ... .)


1 - 您需要 Isolates API 之类的工具来执行此操作。已经有人尝试在研究项目中实现它,但 AFAIK Isolates 从未在生产 JVM 中实现。

关于java - 替代 Thread.suspend() 和 .resume(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28922040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com