gpt4 book ai didi

java - 如何在线程池中重新激活已取消的 future 任务?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:45 27 4
gpt4 key购买 nike

我使用 ThreadPoolExecutor 来运行一些 Action ,有时我取消了一些 future 的任务并将它存储到一个列表中以安排其他一些任务去做,之后我想 react 保存的取消的 future 任务。

但问题是当我将任务提交到池中时,它不会执行,看起来取消或完成标志已保存并被线程执行器识别,因此不会调用该线程。

我该怎么办?

最佳答案

FutureTask实现保持取消状态。本质上,当再次调用 run() 方法时,它会执行一个 CAS 操作,该操作由于状态不可运行而失败,并立即返回而不调用内部 Callable 的 call() 方法。我找不到从中检索原始 Callable 或将 FutureTask 恢复到未取消状态的方法。

为了回应你应该做什么...你必须取消它们吗?为什么不让他们跑?如果你想要优先执行,你可以尝试用 PriorityBlockingQueue 创建你的 ThreadPoolexecutor并使用 Comparator确定优先级。这将允许任务以正确的顺序执行,因为它们将根据 Comparator 的结果添加到 PriorityBlockingQueue

关于java - 如何在线程池中重新激活已取消的 future 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4063177/

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