que tienen un hilo de Java como la siguiente:Valores de retorno de Java Temas
public class MyThread extends Thread {
MyService service;
String id;
public MyThread(String id) {
this.id = node;
}
public void run() {
User user = service.getUser(id)
}
}
Tengo cerca de 300 ids, y cada par de segundos - yo fuego hasta hilos para hacer un llamado a cada uno de los ID. P.ej.
for(String id: ids) {
MyThread thread = new MyThread(id);
thread.start();
}
Ahora, me gustaría recoger los resultados de cada hilos, y hacer un inserto de lote a la base de datos, en vez de hacer 300 de base de datos inserta cada 2 segundos.
¿Alguna idea de cómo puedo lograr esto?
En mi caso, es posible que algunas de las llamadas de servicio nunca vuelvan o tarden demasiado en regresar. Así que 'invokeAll' junto con 'awaitTermination (long timeout)' parece ser el camino a seguir. Por lo tanto, estoy aceptando esta respuesta. Ojalá pudiera aceptar la respuesta de @ daveb también. – Langali
En ese caso, puede usar una versión sobrecargada de 'invokeAll' que toma un parámetro de tiempo de espera. Actualizaré mi respuesta para mostrar cómo. – erickson
Gracias. De alguna manera lo pasé por alto. – Langali