¿Qué tal esta solución?
No usa la clase Thread, pero ES concurrente y, de alguna manera, hace exactamente lo que solicita
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;}
});
Ahora todo lo que debe hacer es decir value.get()
cada vez que necesite tomar su valor devuelto, el hilo se inicia en el mismo segundo en que da value
un valor para que nunca tenga que decirthreadName.start()
.
Lo que Future
es, es una promesa al programa, usted le promete al programa que obtendrá el valor que necesita en algún momento en el futuro cercano
Si lo llama .get()
antes de que termine, el hilo que lo llama simplemente esperará hasta que esté listo