Używam CountDownLatch
do obsługi dwóch wątków Java. Moja klasa struktura jest następująca:Java CountDownLatch czeka na wartość limitu czasu, gdy wątek.run() odliczający zatrzask otrzymuje wyjątek
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);
głównej klasy czeka, aż pozostałe dwa wątki zakończyć swoją pracę. Jak tylko zakończą swoją pracę, nie czekają aż do czasu przekroczenia limitu czasu (20 sekund). Mój problem polega na tym, że jeśli któryś z wątków zostanie zniszczony lub uszkodzony, wtedy CountDownLatch
czeka na swoją wartość limitu czasu. Czy istnieje sposób, aby zignorować przerwaną wątek i iść naprzód bez czekania 20 sekund?
Co masz na myśli, gdy wątki zostaną zniszczone lub uszkodzone? Rzucanie wyjątku? – Alexander
Przenieś wywołanie 'latch.countDown()' w swoim kodzie wątku do bloku 'finally', aby zostało wykonane bez względu na to, co się stanie – zapl