Mam wątek Java tak:Wartości zwracane z Java Threads
public class MyThread extends Thread {
MyService service;
String id;
public MyThread(String id) {
this.id = node;
}
public void run() {
User user = service.getUser(id)
}
}
Mam około 300 identyfikatorów, a co kilka sekund - ja odpalić wątki do nawiązania połączenia dla każdego z id. Na przykład.
for(String id: ids) {
MyThread thread = new MyThread(id);
thread.start();
}
Teraz chciałbym zebrać wyniki z poszczególnych wątków i zrobić wkładkę wsadowy do bazy danych, zamiast dokonywania 300 bazie wstawia co 2 sekundy.
Każdy pomysł, jak mogę to osiągnąć?
W moim przypadku niektóre zgłoszenia serwisowe mogą nigdy nie wrócić lub zbyt długo czekać na ich zwrot. Tak więc "invokeAll" wraz z "waitAnditation (long timeout)" wygląda jak droga. Dlatego akceptuję tę odpowiedź. Chciałbym też móc przyjąć odpowiedź @ daveba. – Langali
W takim przypadku można użyć przeciążonej wersji 'invokeAll', która pobiera parametr limitu czasu. Zaktualizuję moją odpowiedź, aby pokazać, jak. – erickson
Dzięki. Jakoś to przeoczyłem. – Langali