Em alguns casos, precisamos atribuir diferentes pools de threads para executar várias tarefas no projeto. Portanto, diferentes tarefas são controladas monitorando diferentes pools de threads. Para conseguir isso, é necessário que um pool de vários threades seja configurado no projeto.
A Boot Spring fornece soluções de configuração e uso simples e eficientes do pool de threads.
Configuração
Primeiro, configure os feijões do pool de threads para serem entregues ao gerenciamento da primavera:
@ConfigurationPublic Classe taskexectection {@Bean (name = "Threadpoola") publicPooltaskexecutomyTaskasyncpool () {ThreadPooltaskexecutor Executor = new ThreadPooltaskexecutor (); executor.setCorePoolSize (4); executor.setMaxPoolSize (8); Executor.SetQueuecApacity (100); executor.setkeepaliveSeconds (60); executor.setThreadNamePrefix ("Pool-A"); Executor.SetRejectEdExecutionHandler (new ThreadPoolExecutor.CallerRunSpolicy ()); executor.initialize (); executor de retorno; } @Bean (name = "threadpoolb") public threadPooltaskexecutorasyncpoolb () {threadPooltaskexecutor Executor = new ThreadPooltaskexecutor (); Executor.SetCorePoolSize (2); executor.setMaxPoolSize (4); executor.setQueuecApacity (8); executor.setkeepaliveSeconds (60); Executor.SetThreadNamePrefix ("Pool-B"); // A política usada quando o número de tarefas excede o MaxPoolSize e a Queuecapacity. Esta política é chamar o thread da tarefa para executar executor.setRejecteDexecutionHandler (new ThreadPoolExecutor.CallerRunSpolicy ()); executor.initialize (); executor de retorno; }} usar
O uso de threads requer apenas a anotação no método de execução, e a classe do método deve ser definida como um feijão e entregue para o Spring para gerenciar.
Você pode usar anotações @component, @service, etc. na aula
@Async (value = "threadpoola") public void Taska () {...} Verifique o número de threads ativos:
@AUTowired Private ThreadPooltaskexecutor Threadpoola; // O nome da variável é o nome do nome do pool de threads definido. public void checkavtivethreadnum () {int num = threadpoola.getActiveCount ();}É claro que existem outros métodos, então não darei exemplos aqui.
Compreensão de cada atributo do pool de threads:
CorePoolSize: representa o encadeamento do núcleo do pool de threads e o número de threads aberto em circunstâncias normais.
Queuecapacidade: Quando os encadeamentos principais estão executando tarefas, ainda existem tarefas extras que serão salvas aqui.
Maxpoolsize: Se a queuecapacidade estiver cheia, mais threads serão iniciados até que o número de threads atinja MaxpoolSize. Se ainda houver tarefas, ele será processado de acordo com a política de rejeição.
Existem muitas estratégias de rejeição:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.