gpt4 book ai didi

java - 跳到单线程 ExecutorService 中的下一个任务?

转载 作者:行者123 更新时间:2023-12-02 09:36:02 26 4
gpt4 key购买 nike

我正在考虑实现 ExecutorService 来运行一系列任务。我计划使用内部队列让一些任务等待轮到运行。是否有某种方法可以中断当前在 ExecutorService 线程中运行的任务(Runnable),并保持线程处于 Activity 状态以运行下一个任务?或者只能调用 .shutdown() 然后创建一个新的 ExecutorService?

我找到了this并想知道是否还有其他解决方案。

最佳答案

您可能希望拥有一个实现中断机制的Task类(扩展或包装Runnable),而不是干扰线程(例如 boolean 标志)。

当您执行任务时,您需要定期检查此标志,如果设置了该标志,则任务应该停止正在执行的操作。此时您可能想返回一个特定结果,告诉您的代码任务已成功取消。

如果用户现在决定不再需要此任务的结果,你必须设置这个标志。然而此时任务可能已经完成,因此您仍然需要处理结果已经存在但用户不再关心它的情况。

<小时/>

线程级别的中断并不能保证线程停止工作。仅当线程处于可以接收中断的状态时,这才有效。

此外,您不应直接干扰 ExecutorSerivce 的线程,因为您可能会无意中停止其他任务或阻止 ExecutorSerivce 正常工作。

关于java - 跳到单线程 ExecutorService 中的下一个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57512232/

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