Criação e uso de pool de threads

Índice

 Criar um pool de threads

Duas maneiras de usar o pool de threads para multithreading (geralmente use o segundo) 


Obs: Procure não criar o pool de threads no projeto (não crie na lógica de negócio), pois toda vez que esse método for chamado, será criado um pool de threads, que deve ser criado quando o projeto iniciar

 Criar um pool de threads

Crie uma classe ThreadPoolConfig na configuração (nome da classe personalizada)

Adicionar @Configuration: diga ao spring que esta é uma classe de configuração que precisa ser carregada na inicialização

@Bean 
public static ExcutorService getExecutor(){ 
    //ExcutorService线程池
}

O significado aqui é: Crie este método desta classe na inicialização, este método retornará um objeto e entregará este objeto ao Spring para gerenciamento

criar objeto

A primeira é usar o método set para atribuir valores e a segunda é usar o construtor para atribuir valores

@Data : Observação sobre a classe, forneça os métodos get, set, equals, hashCode, canEqual, toString da classe

@AllArgsConstructor : Observação sobre a classe, fornecendo a construção completa dos parâmetros da classe

@NoArgsConstructor : Nota sobre a classe, fornecendo a construção sem argumentos da classe

(estes dois são equivalentes)

 Criar um pool de threads

Parâmetros na classe ExecutorBuilder

 Esses valores mágicos podem ser colocados no arquivo de configuração ou você pode escrever uma constante aqui, o arquivo de configuração é selecionado aqui (Nota: os arquivos de configuração geralmente são minúsculos)

 ou

 Criação do pool de threads

Os significados dos parâmetros aqui são: o número de threads do núcleo, o número máximo de threads, o tempo de sobrevivência do thread (ele será reciclado após muito tempo sem trabalho) e a estratégia de rejeição (existe uma classe ThreadPoolExcutor que coloca especificamente a estratégia de rejeição) (aqui é definido para permitir que o thread principal seja executado), fila (aqui o tamanho da fila é 2000), prefixo do thread, permitir tempo limite do thread principal 

Porque já o demos ao spring para gerenciar quando o criamos, então, quando o usarmos, podemos simplesmente ir para o spring para obtê-lo (igual à interface)

 

Duas maneiras de usar o pool de threads para multithreading (geralmente use o segundo) 

 O primeiro tipo: anotação assíncrona @Asyc

Dê um nome ao objeto pool de threads criado por spring

O segundo tipo: classe CompletableFuture fornecida por jdk1.8

(O significado aqui é: iniciar uma tarefa assíncrona, lançar esta tarefa no pool de threads ExcutorService para executar)

 Há dois casos aqui

Uma situação é entregar a tarefa ao pool de threads, sem prestar atenção na execução da tarefa. A tarefa é entregue ao pool de threads e o thread principal é liberado (principalmente aplicável a algumas operações de atualização); em outro caso, depois que a tarefa é entregue ao pool de threads, o thread principal é bloqueado e aguarda a consulta resultados. (Aplicável principalmente a: a necessidade de consultar o banco de dados em um loop for; a necessidade de chamar a consulta da interface http em um loop; o próprio método é muito complicado e precisa consultar o banco de dados várias vezes)

concluir:

Existem três métodos

 Lança tarefas no pool de threads para uso

 Bloqueie antes que a tarefa seja concluída (não adicione se não se importar com o valor de retorno)

Acho que você gosta

Origin blog.csdn.net/qq_52240237/article/details/132210275
Recomendado
Clasificación