gpt4 book ai didi

java - 如何删除 ExecutorService 中所有正在运行和排队的任务并向其中添加新任务?

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

如何删除 ExecutorService 中所有正在运行和排队的任务并向其中添加新任务?

有一个ExecutorService处理每一轮的新任务。
如果本轮任务没有完成,则删除这些旧任务并添加下一轮新任务。 ExecutorService将在下一轮重用,所以ExecutorService无法关闭。
有人知道怎么做吗?

最佳答案

how to remove all the running and queued tasks in ExecutorService and add new tasks into it?

添加很简单 - 只需调用submit即可。另一方面,删除则比较棘手 - 您可以调用 shutdownNow。 Javadoc:

Attempts to stop all actively executing tasks, halts theprocessing of waiting tasks, and returns a list of the tasks that were awaiting execution.

但是 shutdownNow() 实际上会关闭执行器,因此它将拒绝接受新任务。另外,请注意 Javadoc 中的“尝试”一词。一旦任务开始执行,就不能保证它可以轻易停止。任务可以忽略中断并继续运行。

如果您想要更精细的控制,请不要使用ExecutorService。相反,尝试使用ThreadPoolExecutor,它实现了ExecutorService。在 ThreadPoolExecutor 中,您可以直接访问 Runnable 队列。

关于java - 如何删除 ExecutorService 中所有正在运行和排队的任务并向其中添加新任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58284559/

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