Sto cercando una buona soluzione per coordinare diverse attività di multithreading.Concorrenza Java: Coordinamento di più attività e annullamento
Fondamentalmente Ho 2 compiti, chiamo A
e B
che devono essere eseguite su un thread diverso dal thread principale.
Ma il B
deve essere avviato dopo che A
è stato completato. A
e B
possono contenere più parti che devono essere parallele, chiamate A1, A2, ... B1, B2, ...
.
E c'è un chiamante dall'esterno, che ha bisogno di riavviare l'intero lavoro indipendentemente dal progresso. Come posso ottenerlo? Ho pensato di creare una sorta di array booleano contenente le informazioni se ogni attività secondaria (A1, ...) ha già completato e in tal caso avviare B. E controllare ogni poche righe di codice in ciascun metodo se è già stata effettuata una cancellazione. Ma a me sembra che quella non sia una soluzione elegante e che ci siano modi per coordinare eccome questo.
Volete ExecutorServices. E tu vuoi aspettare Futures. Tutto ciò è disponibile nelle pagine della documentazione Java di Oracle. – Fildor
I tuoi sottoattività (A1, A2 ...) restituiscono qualche risultato? Se sì, è utile 'java.util.concurrent.FutureTask' per gestire tale processo: http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/FutureTask.html. Se no, usa 'CountDownLatch' dallo stesso pacchetto. –
http://stackoverflow.com/questions/1361029/waiting-on-multiple-threads-to-complet-in-java – StanislavL