Che ne dici di questa soluzione?
Non usa la classe Thread, ma È concorrente e in un certo senso fa esattamente ciò che richiedi
ExecutorService pool = Executors.newFixedThreadPool(2); // creates a pool of threads for the Future to draw from
Future<Integer> value = pool.submit(new Callable<Integer>() {
@Override
public Integer call() {return 2;}
});
Ora tutto ciò che fai è dire che value.get()
ogni volta che devi prendere il valore restituito, il thread viene avviato proprio nel momento in cui dai value
un valore in modo da non doverlo mai dire threadName.start()
su di esso.
Cos'è Future
, è una promessa al programma, prometti al programma che otterrai il valore di cui ha bisogno nel prossimo futuro
Se lo chiami .get()
prima che sia finito, il thread che lo sta chiamando aspetterà semplicemente finché non sarà finito