gpt4 book ai didi

java - 当所有线程都在使用时,如何增加 newFixedThreadPool 或 newScheduledThreadPool 中的线程数量?

转载 作者:行者123 更新时间:2023-11-30 02:38:50 25 4
gpt4 key购买 nike

我想知道当所有线程都在使用时,是否有办法增加 FixedThreadPoolScheduledThreadPool 中的线程数量。对于示例1:假设我们采用一个大小为5的FixedThreadPool,当所有线程都在使用时,则需要完成的另一个任务或函数必须等待一个线程变得空闲。我需要避免这种情况,并且线程数量必须动态增加而不使用CachedThreadPool。有什么办法可以做到吗?

示例2:

ScheduledExecutorService execService =  Executors.newScheduledThreadPool(1);

我将上面示例中的线程数量限制为 2 到 1。现在,当该线程忙于执行某些任务时,其他要完成的任务必须等待,对吗?现在我想要这样:这个固定数量的线程必须动态增加。无论如何这样做吗?

最佳答案

实际上只有一个类实现了 ScheduledExecutorService,称为 ScheduledThreadPoolExecutor。它有两个参数来定义它可以拥有的线程数,即核心线程池(或最小大小)和最大线程池大小。

固定线程池工厂方法创建此类的一个实例,其中最小值和最大值相同。

缓存线程池工厂方法创建一个实例,其最小值为 0,没有真正的最大值。

如果您想要动态线程池大小,我建议您设置一个您认为合适的最大值和最小值。无论您创建实例目录还是使用固定/缓存线程池都没有太大区别。

关于java - 当所有线程都在使用时,如何增加 newFixedThreadPool 或 newScheduledThreadPool 中的线程数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42363849/

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