sto usando Executors.newCachedThreadPool()
e invokeAll
con una lista di Callable
s per fare l'elaborazione di lunga durata multithread. Il mio thread principale è bloccato fino a quando tutti i thread sono finiti e posso elaborare i Futures restituiti da invokeAll
. Vorrei comunque che invokeAll
restituisca immediatamente se uno dei Callable
s genera un'eccezione e termina gli altri thread.Ritorna al thread principale non appena uno thread figlio genera un'eccezione
Utilizzando execute
anziché invokeAll
bloccherebbe il primo future.get()
che deve non essere quello che genera l'execption.
Utilizzo occupato in attesa di scorrere tutti i futures e controllo isDone()
sembra non essere il modo migliore neanche.
hai provato a chiudere il servizio di esecuzione e interromperlo? se quegli altri compiti non aspettano/leggono possono ancora controllare il flag di interruzione del thread ogni tanto – radai