gpt4 book ai didi

java - ScheduledThreadPoolExecutor 可以同时执行多个任务吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:03 24 4
gpt4 key购买 nike

ScheduledThreadPoolExecutor 的文档说 -安排在完全相同执行时间的任务以先进先出 (FIFO) 的提交顺序启用。

这是否意味着应该同时完成的任务永远不会同时完成。相反,它们以 FIFO 顺序执行?

如果那是真的那么我应该使用哪个类比 Timer 更好并且没有这个 FIFO 问题?

最佳答案

ScheduledThreadPoolExecutor 的工作方式是有一个"dispatch"或主线程来检查要执行的任务。

如果它找到一个任务,它会将它委托(delegate)给池中的“工作”线程。

如果多个任务准备好执行,它们将一次“启动”一个任务,但根据 Java 的定义,一旦“启动”,后续处理是并发的。

如果您有两个任务同时通过执行程序安排,它们完成的顺序可能会因运行而异,除非您加入特定的控制,例如锁定、等待等...处理这个问题,取决于 java 的线程调度(java 如何为核心上的线程分配时间)来确定处理内容的方式和时间。请注意,设置此类锁、等待等...是一项看似复杂的任务,容易出现竞争条件,导致意外死锁、活锁等...

关于java - ScheduledThreadPoolExecutor 可以同时执行多个任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346311/

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