Voglio un oggetto che genera un thread daemon che continuerà a essere eseguito per tutta la durata del processo. Diciamo, solo per il gusto dell'argomento, che si tratta di un thread in un sistema embedded e attende di ricevere e gestire i comandi su alcune porte diagnostiche. Ma potrebbe essere qualsiasi cosa veramente. L'idea principale è che è che guarda qualcosa per un lungo periodo di tempo; Non sta eseguendo una sequenza di attività .
La saggezza comune di Java dice: Mai istanziare Thread
, usa invece ExecutorService
. (Ad es., Vedi questa risposta ) Ma qual è il vantaggio? Usare un thread pool come mezzo per creare un singolo thread di lunga durata sembra inutile. Come sarebbe meglio se scrivessi questo?
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: questa domanda sembra simile alla mia, ma le risposte dicono solo come utilizzare un pool di thread, non perché .