【发布时间】:2022-01-11 02:06:49
【问题描述】:
我找不到任何满足我要求的执行者。 我想要一个带有 corePoolSize、maximumPoolSize 和 BlockingQueue 的 ExecutorService;
调用execute函数时,像往常一样使用核心线程,如果核心线程正在使用,则将任务放入队列,如果队列已满,则创建新线程,直到达到maximumPoolSize。这是 ThraPoolExecutor 的标准行为。 ThreadPoolExecutor
在这部分之前一切都很好。我可以用这个规范创建一个 ThreadPoolExecutor。
但是对于某些任务,如果核心线程已满,请不要将它们排队创建一个新线程。但是如果 maximumPoolSize 达到然后排队任务但把任务放在第一位。
如何实现这样的需求,有没有可以使用的内置功能。
【问题讨论】:
-
这是什么意思? “......然后将任务排队,但将任务放在第一位。”
-
@swpalmer 我已经编辑了问题。
-
您希望任务优先,以便最后提交的任务是下一个计划执行的第一个任务? LIFO?
-
@BasilBourque 是的,但仅适用于某些任务,例如为它们调用 executeNow() 函数,如果 maxPoolSize 未满则使用它们,否则将任务置于队列顶部。
-
哪个标准应该告诉执行者某个任务是特殊任务?
标签: java multithreading concurrency threadpool executorservice