Boa tarde.
Há uma pergunta para uma entrevista como esta.
Quantas maneiras de criar threads você conhece? O número 2 aparece nas respostas: ou create
Thread
, passando-o
Runnable
, ou crie um objeto de uma classe descendente
Thread
na qual
run()
. Mas me perguntei: são dois? Se você usar
concurrent
, por exemplo,
Executors.newFixedThreadPool(5)
quando os objetos thread forem criados, imediatamente quando esse método for executado, ou posteriormente, quando as tarefas aparecerem para execução (afinal, elas podem não aparecer). Todos esses métodos de fábrica retornam algum tipo de configuração
ThreadPoolExecutor
, que possui um dos parâmetros de configuração.
corePoolSize
Sobre este campo está escrito:
corePoolSize
– o número de threads a serem mantidos no pool,
mesmo que estejam ociosos , a menos que
allowCoreThreadTimeOut
esteja definido Por outro lado, se as tarefas não chegaram, então criamos 5 trabalhadores ociosos, talvez eles comecem a ser criados quando as tarefas começarem a chegar?
Em geral, ainda podemos ter em mente 2 ou 3 opções como resposta à pergunta?
GO TO FULL VERSION