SpringBoot utilizar el grupo de subprocesos

El uso rutinario de la agrupación de hebras:

clase de mensaje, llamando a la agrupación de hebras

Copiar el código
MessageClientSendMsg pública clase { 

    / ** 
     * registrador 
     * / 
    privado el registro REGISTRADOR = new nueva estática final del registro (MessageClientSendMsg.class); 

    / ** 
     * grupo de subprocesos 
     * / 
    private static ExecutorService ThreadPool; 

    / ** 
     * la traza 
     * / 
    privada Cadena de la traza ; 

    / ** 
     * número de teléfono 
     * / 
    cadena cellNum privada; 

    / ** 
     * entidad mensaje 
     * / 
    messageProducerReq MessageProducerReq privadas; 

    estática { 
        ThreadPool = Executors.newFixedThreadPool (10); // número de grupo de subprocesos fija 
    } 

    / **  
     * configuración función
     * 
     * @Param solicitar el agua traza 
     * @param cellNum número de teléfono 
     * @param mensaje entidad messageProducerReq 
     * / 
    MessageClientSendMsg pública (la traza String, String cellNum, MessageProducerReq messageProducerReq) { 

        this.trace = el rastro; 
        this.cellNum = cellNum; 
        this.messageProducerReq = messageProducerReq; 
    } 

    / ** 
     * mensaje 
     * / 
    public void sendmsg () { 

        sendMsgRunable sendMsgRunable nuevos nuevos sendMsgRunable = (); 

        threadPool.execute (sendMsgRunable); 
    } 

    / ** 
     * clase de enviar el mensaje de manipulación y anomalías internas, no afectan el hilo principal negocio 
     * /
    implementa la clase SendMsgRunable Ejecutable {
 
        @ Override
        public void run () { 

            try { 
                MessageClientProducer msgClintProducer = new MessageClientProducer (); 
                msgClintProducer.sendAsyncWithPartition (traza, cellNum, messageProducerReq); 
            } Catch (Exception e) { 
                LOGGER.error ( "消息发送失败, vestigios:" + traza); 
            } 
        } 
    } 
}
Copiar el código

SpringBoot utilizar el grupo de subprocesos mediante anotaciones y notas @EnableAsync @Async

Configuración de grupos de subprocesos:

Copiar el código
java.util.concurrent.ThreadPoolExecutor, Import; 

@Configuration 
@EnableAsync 
clase pública BeanConfig { 

    @Bean 
    público del TaskExecutor, TaskExecutor () { 
        el ThreadPoolTaskExecutor es la ThreadPoolTaskExecutor es ejecutor nuevos nuevos = (); 
        // establecer el número de hilos de núcleo 
        executor.setCorePoolSize (5.); 
        // establecer el máximo hilos 
        executor.setMaxPoolSize (10); 
        // establecer la capacidad de la cola 
        executor.setQueueCapacity (20 es); 
        // set tiempo hilo activo (sec) 
        executor.setKeepAliveSeconds (60); 
        // set nombre hilo predeterminada 
        executor.setThreadNamePrefix ( "Hello- "); 
        // set política de denegación
        executor.setRejectedExecutionHandler (nueva nueva ThreadPoolExecutor.CallerRunsPolicy ()); 
        // espera para todas las tareas para cerrar después del final de la agrupación de hebras 
        executor.setWaitForTasksToCompleteOnShutdown (true); 
        retorno Ejecutor; 
    } 
}
Copiar el código

operaciones simultáneas:

Copiar el código
org.springframework.scheduling.annotation.Async importación; 
org.springframework.stereotype.Component importación; 
java.text.SimpleDateFormat importación; 
java.util.Date importación; 


@Component 
public class Prueba { 
    @Async 
   prueba public void (int i) { 
        formato SimpleDateFormat = new SimpleDateFormat ( "HH: mm: ss"); 
        try { 
            Thread.sleep (10000); 
            System.out.println ( "多线程异步执行" + i + " "+ Thread.currentThread () getName () +"." + Format.format (new Date ())); 
        } Catch (InterruptedException e) { 
            e.printStackTrace (); 
        } 
    } 
}
Copiar el código

usos capa del controlador

Copiar el código
@GetMapping ( "/ test") 
@ResponseBody 
prueba public void () { 
    for (int i = 0; i <100; i ++) { 
         test.test (i); 
    } 
}
Copiar el código

 

Supongo que te gusta

Origin www.cnblogs.com/ZenoLiang/p/12624030.html
Recomendado
Clasificación