2010-11-30 23 views
5

Quiero ejecutar varias tareas programadas simultáneamente.@ Scheduled & scheduler: ¿Qué hace exactamente pool-size?

Al configurar la primavera de hacerlo, yo puede suministrar una piscina de tamaño al programador:

<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/> 
<task:executor id="myExecutor" pool-size="32"/> 
<task:scheduler id="myScheduler" pool-size="1000"/> 

Pero ¿qué significa exactamente el tamaño ppol aquí?

¿Significa que solo puede almacenar 1000 Métodos programados o significa que solo se pueden procesar 1000 Métodos al mismo tiempo?

tldr; Si un @Scheduled (fixedDelay = 60) Método anotado es NOT ejecutado en este momento (lo que significa que está entre el retraso), ¿llena el grupo o no?

Respuesta

4

Se refiere al número de subprocesos que se pueden agrupar a la vez por el ThreadPoolExecutor subyacente, es decir, el número nocional de métodos que se pueden ejecutar al mismo tiempo.

La documentación en el task namespace entra en muchos de los detalles que necesita.

Espero que 1000 hilos probablemente sean demasiados en la mayoría de los entornos.

+0

¿Entonces no se junta hasta la ejecución? Cuando la ejecución ha finalizado, el hilo correspondiente se elimina del grupo hasta la próxima ejecución? – chzbrgla

+1

La documentación no es específica sobre qué significa '' pool-size', pero generalmente significa la cantidad total de subprocesos que existirán en cualquier momento. Algunos de ellos pueden estar ocupados, y algunos pueden estar inactivos, pero se considera que todos están en el grupo. –

+0

@Tom: tiene razón sobre cómo funcionará la agrupación, pero la documentación es bastante específica: utiliza ThreadPoolTaskExecutor y el tamaño de la agrupación se pasa a eso. – GaryF

Cuestiones relacionadas