@Scheduled&scheduler:pool-size究竟做了什么?

chz*_*gla 5 java spring annotations scheduling scheduled-tasks

我想同时运行几个预定的任务.

配置spring时,我可以为调度程序提供池大小:

<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<task:executor id="myExecutor" pool-size="32"/>
<task:scheduler id="myScheduler" pool-size="1000"/>
Run Code Online (Sandbox Code Playgroud)

但是游泳池大小到底意味着什么呢?

这是否意味着它只能存储1000个预定方法,还是意味着只能同时处理1000个方法?

tldr; 如果注解的方法一@Scheduled(FIXEDDELAY = 60)不要在此刻执行(这意味着它的延迟之间),它填补了游泳池或不?

Gar*_*ryF 5

它指的是底层 ThreadPoolExecutor 可以同时池化的线程数量,即可以同时运行的方法的名义数量。

有关任务命名空间的文档详细介绍了您需要的许多细节。

我预计在大多数环境中 1000 个线程可能太多了。

  • 该文档没有具体说明“池大小”的含义,但通常,它表示随时存在的线程总数。其中一些可能很忙,一些可能空闲,但都被认为在池中。 (2认同)