0

想象一下将任务添加到调度线程池执行程序的情况。这些任务中的每一个都将以不同的周期间隔继续运行。

尽管所有此类任务不会同时运行,因为每个任务都设置在不同的时间间隔,但可能存在大量线程竞争执行的情况。

线程总数有限制吗?似乎对空闲线程的总数有限制。这种空闲线程的概念是否意味着长时间运行的任务(线程)可能会在需要时被销毁和重新创建?

4

1 回答 1

1

调度线程池执行器的线程池大小是否不断增长?

没有。来自http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html

.... it acts as a fixed-sized pool using corePoolSize threads ...

线程总数有限制吗?

是的。看上面。

似乎对空闲线程的总数有限制。

我不确定是什么让你这么想;文档中的任何内容(或测试时的行为)都没有暗示这一点。

这种空闲线程的概念是否意味着长时间运行的任务(线程)可能会在需要时被销毁和重新创建?

任务!=线程;这个问题没有多大意义。任务将在其运行的整个时间内占用其线程;因此,长时间运行的任务会使线程长时间占用,从而减少在此期间可用于其他计划任务的线程数。执行者永远不会销毁和重新创建任务,期间。执行程序可能会尝试停止任务,但前提是您明确告诉它这样做,例如通过shutdownNow()whichinterrupt()所有正在运行的任务。不相关的是,固定大小的池中的线程不会被销毁或重新创建,因为它是固定大小的池。

于 2013-11-02T09:43:32.990 回答