【发布时间】:2018-06-16 17:45:35
【问题描述】:
我有一个 一个类 的 3 个实例,它实现了runnable 接口。我正在实例化我的Executor 类,如下所示;
executor = Executors.newScheduledThreadPool(2);<--- talking about this part
executor.scheduleAtFixedRate(unassignedRunnable, 0, refreshTime, TimeUnit.SECONDS);
executor.scheduleAtFixedRate(assignedToMeRunnable, 2, refreshTime, TimeUnit.SECONDS);
executor.scheduleAtFixedRate(createTicketsFromFile, 3, refreshTime * 2, TimeUnit.SECONDS);
我的问题是,如果我将线程池计数从 2 更改为 1 或 3 会有什么不同吗?我尝试过,几乎一无所获。谁能解释线程池计数的实际用途?也许我的任务很轻?
【问题讨论】:
-
想必你的任务确实是轻量级的。该参数生成新线程 - 如果您有一个每秒运行一次的任务需要 900 毫秒才能运行,那么该线程将有 100 毫秒的空闲时间。如果您有另一个每秒运行的任务需要 900 毫秒才能运行,那么您的线程池将无法应对。这里没有经验法则 - 如果您的计划任务在您要求的容差范围内运行,那么您不需要更多线程。
-
@BoristheSpider 我明白了。谢谢。所以有点“试试看”。
-
是的。基准,基准,基准。然后再进行一些基准测试...
-
@BoristheSpider 好的基准爱好者.. 非常感谢。请将您的回复移至答案部分,以便我选择“答案”。
标签: java multithreading threadpool executorservice threadpoolexecutor