import java.util.concurrent.CountDownLatch;
public class Main {
CountDownLatch latch = new CountDownLatch(1);
public void a() {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("A: I am going to sleep");
System.out.println("A: I slept one full day. Feels great.");
System.out.println("A: Hey B, wake up!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
latch.countDown();
}
}).start();
}
public void b() {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("B: I am going to sleep. A, please wake me up.");
try {
latch.await();
} catch (InterruptedException e) {
}
System.out.println("B: Thank you A for waking me up!");
}
}).start();
}
public static void main(String[] args) {
Main obj = new Main();
obj.a();
obj.b();
}
}