O que são os fios do trabalhador, e qual é o seu papel no padrão do reator?

Estou tentando entender o padrão do reator (concorrente), mas em muitos exemplos eles estão falando sobre "threads de trabalhadores". O que são roupas de trabalhador? Em que é que diferem dos fios "normais"? E qual é o seu papel no padrão do reactor?

Author: Jon, 2012-11-05

2 answers

O padrãodo Reactor é usado com fios de trabalho para superar um cenário comum em aplicações: você precisa fazer um monte de trabalho eventualmente, mas você não sabe que trabalho e quando e criar fios é uma operação cara.

A ideia é criar muitos fios que não fazem nada no início. Em vez disso, "esperam pelo trabalho". Quando o trabalho chega (sob a forma de código), algum tipo de serviço executor (o reator) identifica fios ociosos do pool e atribui-lhes trabalho para fazer.

Dessa forma, você pode pagar o preço para criar todos os threads uma vez (e não toda vez que algum trabalho tem que ser feito). Ao mesmo tempo, seus threads são genéricos; eles farão qualquer trabalho que lhes seja atribuído em vez de serem especializados para fazer algo específico.

Para uma implementação, olhe para conjuntos de fios.

 29
Author: Aaron Digulla, 2012-11-05 15:41:46
Presumo que esteja a falar de algo como esta documentação em "thread-pools".:

A maioria das implementações executoras em java.util.utilizar simultaneamente grupos de linhas que consistem em fios de trabalho. Este tipo de thread existe separadamente das tarefas executáveis e chamáveis que executa e é frequentemente usado para executar várias tarefas.

Os fios do trabalhador são fios normais, mas existem separados das classes Runnable ou Callable que eles trabalham. Se você Extender Thread ou construir um Thread com um argumento Runnable, a tarefa está ligada directamente ao objecto Thread.

Quando cria um grupo de linhas usando Executors.newFixedThreadPool(10); (ou outros métodos semelhantes), cria um grupo de 10 tópicos que podem correr qualquer número de classes diferentes {[[0]} ou Callable que são submetidas ao grupo. Por baixo das capas ainda são um {[[2]} apenas mais flexível por causa da forma como são embrulhados.

Em termos do reactor padrão , os diferentes tipos de eventos são executados pelos tópicos do manipulador que são semelhantes. Um thread não está amarrado a uma única classe de eventos, mas irá executar qualquer número de eventos diferentes como eles ocorrem.

 18
Author: Gray, 2016-10-10 16:34:51