Created
December 4, 2017 15:01
-
-
Save prabhatkashyap/2ee5183ee12f536deb37ee0d59f213ab to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Java Program to demonstrate how to use CountDownLatch, | |
Its used when a thread needs to wait for other threads | |
before starting its work. */ | |
import java.util.concurrent.CountDownLatch; | |
public class CountDownLatchDemo | |
{ | |
public static void main(String args[]) throws InterruptedException | |
{ | |
// Let us create task that is going to wait for four | |
// threads before it starts | |
CountDownLatch latch = new CountDownLatch(4); | |
// Let us create four worker threads and start them. | |
Worker first = new Worker(1000, latch, "WORKER-1"); | |
Worker second = new Worker(2000, latch, "WORKER-2"); | |
Worker third = new Worker(3000, latch, "WORKER-3"); | |
Worker fourth = new Worker(4000, latch, "WORKER-4"); | |
first.start(); | |
second.start(); | |
third.start(); | |
fourth.start(); | |
// The main task waits for four threads | |
latch.await(); | |
// Main thread has started | |
System.out.println(Thread.currentThread().getName() + | |
" has finished"); | |
} | |
} | |
// A class to represent threads for which the main thread | |
// waits. | |
class Worker extends Thread | |
{ | |
private int delay; | |
private CountDownLatch latch; | |
public Worker(int delay, CountDownLatch latch, | |
String name) | |
{ | |
super(name); | |
this.delay = delay; | |
this.latch = latch; | |
} | |
@Override | |
public void run() | |
{ | |
try | |
{ | |
Thread.sleep(delay); | |
latch.countDown(); | |
System.out.println(Thread.currentThread().getName() | |
+ " finished"); | |
} | |
catch (InterruptedException e) | |
{ | |
e.printStackTrace(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment