gpt4 book ai didi

java - 启动新线程而不是放入队列

转载 作者:行者123 更新时间:2023-11-29 03:42:16 24 4
gpt4 key购买 nike

来自 ThreadPoolExecutor 的 javadoc:

When a new task is submitted in method execute(java.lang.Runnable) .... If there are more than corePoolSize but less than maximumPoolSize threads running, a new thread will be created only if the queue is full.

在这种情况下,如何使 ThreadPool 启动新线程而不是将任务提交到队列?

例子:

我有 corePoolSize=5 和 maxPoolSize=10 的线程和无界队列。

假设 corePoolSize 个线程现在正忙,并且新任务到达 - 池必须启动新线程并执行新任务。

假设 maxPoolSize 线程现在很忙,并且新任务到达 - 池必须将任务持久化到队列中,并且第一个空闲线程必须接受该任务并执行。

最佳答案

如果你想要一个最大尺寸的线程池,只有当所有线程都忙时任务才会排队。

ExecutorService service = Executors.newFixedThreadPool(numberOfThreads);

缓存线程池,不会对任务进行排队,但会根据需要创建一个新线程。如果一个线程空闲,它将重新使用一个线程。

ExecutorService service = Executors.newCachedThreadPool();

关于java - 启动新线程而不是放入队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12601664/

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