Java by API/java.util.concurrent/CountDownLatch
CountDownLatch: await()
import java.util.concurrent.CountDownLatch;
public class Main {
public static void main(String args[]) {
CountDownLatch cdl = new CountDownLatch(5);
new MyThread(cdl);
try {
cdl.await();
} catch (InterruptedException exc) {
System.out.println(exc);
}
System.out.println("Done");
}
}
class MyThread implements Runnable {
CountDownLatch latch;
MyThread(CountDownLatch c) {
latch = c;
new Thread(this).start();
}
public void run() {
for(int i = 0; i<5; i++) {
System.out.println(i);
latch.countDown(); // decrement count
}
}
}
CountDownLatch: countDown()
import java.util.concurrent.CountDownLatch;
public class Main {
public static void main(String args[]) {
CountDownLatch cdl = new CountDownLatch(5);
new MyThread(cdl);
try {
cdl.await();
} catch (InterruptedException exc) {
System.out.println(exc);
}
System.out.println("Done");
}
}
class MyThread implements Runnable {
CountDownLatch latch;
MyThread(CountDownLatch c) {
latch = c;
new Thread(this).start();
}
public void run() {
for(int i = 0; i<5; i++) {
System.out.println(i);
latch.countDown(); // decrement count
}
}
}