Sto utilizzando un CountDownLatch
per gestire due thread Java. La mia struttura di classe è la seguente:Java CountDownLatch attende il valore di timeout quando il thread.run() che esegue il conto alla rovescia del latch riceve un'eccezione
MainClass.java
ThreadOne.java
ThreadTwo.java
MainClass:
CountDownLatch latch = new CountDownLatch(2);
Thread thread = new Thread(new ThreadOne(latch));
thread.start();
Thread thread1 = new Thread(new ThreadTwo(latch));
thread1.start();
latch.await(20, TimeUnit.SECONDS);
principali Waits classe fino a quando altri due thread completare il loro lavoro. Non appena completano il lavoro, non attende il suo valore di timeout (20 secondi). Il mio problema è che se uno qualsiasi dei thread viene distrutto o danneggiato, lo CountDownLatch
attende il suo valore di timeout. C'è un modo per ignorare quella discussione interrotta e andare avanti senza aspettare 20 secondi?
Cosa intendi con i tuoi Thread che vengono distrutti o corrotti? Lanciare un'eccezione? – Alexander
sposta la chiamata 'latch.countDown()' nel tuo codice thread in un blocco 'finally' in modo che venga eseguita indipendentemente da ciò che accade – zapl