Dapatkah seseorang membantu saya untuk memahami apa itu Java CountDownLatch
dan kapan menggunakannya?
Saya tidak punya ide yang jelas tentang cara kerja program ini. Seperti yang saya pahami ketiga utas mulai sekaligus dan setiap utas akan memanggil CountDownLatch setelah 3000ms. Jadi hitung mundur akan berkurang satu per satu. Setelah kait menjadi nol program mencetak "Selesai". Mungkin cara saya memahami itu salah.
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class Processor implements Runnable {
private CountDownLatch latch;
public Processor(CountDownLatch latch) {
this.latch = latch;
}
public void run() {
System.out.println("Started.");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
latch.countDown();
}
}
// ------------------------------------------------ -----
public class App {
public static void main(String[] args) {
CountDownLatch latch = new CountDownLatch(3); // coundown from 3 to 0
ExecutorService executor = Executors.newFixedThreadPool(3); // 3 Threads in pool
for(int i=0; i < 3; i++) {
executor.submit(new Processor(latch)); // ref to latch. each time call new Processes latch will count down by 1
}
try {
latch.await(); // wait until latch counted down to 0
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Completed.");
}
}