Quero um objeto que gerará um encadeamento daemon que continuará sendo executado durante o tempo de vida do processo. Digamos, apenas por uma questão de argumento, que é um encadeamento em um sistema incorporado e aguarda para receber e manipular comandos em alguma porta de diagnóstico. Mas, poderia ser qualquer coisa realmente. A idéia principal é que ele esteja assistindo algo por um longo período de tempo; Não está executando uma sequência de tarefas .
A sabedoria comum sobre Java diz: Nunca instancia Thread
, use um ExecutorService
. (Por exemplo, veja esta resposta ) Mas qual é o benefício? Usar um conjunto de encadeamentos como um meio para criar um único encadeamento de longa execução parece inútil. Como seria melhor do que se eu escrevesse isso?
class Foobar {
public Foobar() {
this.threadFactory = Executors.defaultThreadFactory();
...
}
public Foobar(ThreadFactory threadFactory) {
this.threadFactory = threadFactory;
...
}
public void start() {
fooThread = threadFactory.newThread(new Runnable() { ... });
fooThread.setDaemon(true);
fooThread.start();
}
...
}
Nota: esta pergunta parece semelhante à minha, mas as respostas dizem apenas como usar um pool de threads, não o porquê .