Este artículo presenta la configuración del grupo Spring Thread ThreadPoolTaskExecutor, y lo comparte con usted, como sigue:
1. Configuración de TreadpoolTaskExecutor
< /> <!-Cache Queue-> <Property Name = "QueueCapacity" value = "20" /> <!-Política de manejo para rechazar tareas-> <propiedad name = "RecheedExeCutionHandler"> <bean /> < /Property> < /bean>
Descripción del campo del atributo
CorePoolSize: el número mínimo de hilos mantenidos por el grupo de subprocesos
KeepAliveSeconds: Tiempo libre permitido
MaxpoolSize: el número máximo de hilos mantenidos por el grupo de subprocesos
Queuecapacidad: cola de caché
RechazeDeCutionHandler: Estrategia de manejo para rechazar la tarea
2. Ejecutar (Runable) Proceso de ejecución del método
Si el número de grupos de subprocesos es menos que CorePoolSize en este momento, incluso si los hilos en el grupo de subprocesos están inactivos, se debe crear un nuevo hilo para manejar las tareas agregadas.
Si el número en el grupo de subprocesos es igual a corepoolSize, pero la cola de búfer no está llena, entonces la tarea se coloca en la cola de búfer.
Si el número de grupos de subprocesos es mayor que CorePoolSize en este momento, el trabajo de trabajo de cola de búfer está lleno y el número de grupos de subprocesos es menor que MaxpoolSize, cree un nuevo hilo para manejar las tareas agregadas.
Si el número en el grupo de subprocesos es mayor que CorePoolSize en este momento, el trabajo de trabajo de cola de búfer está lleno y el número en el grupo de subprocesos es igual a maxpoolSize, entonces esta tarea se maneja a través de la política especificada por el controlador. Es decir, la prioridad de las tareas de manejo es: Core Thread CorePoolSize, trabajo de trabajo de la cola de tareas, Maximum Thread MaximumumpolSize. Si los tres están llenos, use el controlador para manejar la tarea rechazada.
Cuando el número de hilos en el grupo de subprocesos es mayor que CorePoolSize, si un hilo está inactivo durante más que KeepAliveTime, el hilo se terminará. De esta manera, el grupo de subprocesos puede ajustar dinámicamente el número de hilos en la piscina.
3. Código de muestra
Prueba de Junit
@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = {multithreadconfig.class}) clase pública multithithreadtest {@aUtowired private threadpooltaskExecutor taskExecutor; @AUTOWIREDIRDIRD MultIThreadProcessService multithithreadProcessService; @Test public void test () {int n = 20; for (int i = 0; i <n; i ++) {taskexecutor.execute (new MultithreadDemo (multithreadprocessService)); System.out.println ("int i es" + i + ", ahora Threadpool Active Threads Totalnum es" + TaskExecutor.getActiveCount ()); } try {system.in.read (); } catch (ioException e) {Throw New RuntimeException (e); }}}Multichreaddemo
/** * Demo de procesamiento concurrente multithread * @author daniel.zhao * */public class múltiple implementos implementos runnables {private múltiples múltiplesservice multithithreadprocessservice; public multithreadDemo () {} public multithreaddemo (multithreadprocessService multithithreadprocessService) {this.multithreadprocessService = multithreadprocessservice; } @Override public void run () {multithithreadprocessservice.processsomthing (); }}Múltiples servicios
@ServicePublic Class MultIThreadProcessService {public static final logger = logger.getLogger (multithithreadprocessservice.class); / ** * El proceso de procesamiento predeterminado toma 1000ms */ public void processsomnething () {logger.debug ("multithreadprocessservice-processsomething" + thread.currentThread () + "...... inicio"); intente {Thread.sleep (1000); } catch (InterruptedException e) {Throw New RuntimeException (e); } logger.debug ("múltiple-propossservice-processsomething" + thread.currentThread () + "...... end"); }}Multichreadconfig
@Configuration @ComponentsCan (basepackages = {"com.xxx.multithread"}) @imporTresource (value = {"classpath: config/application-task.xml"}) @enablescheduling multithithonfig {}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.