package com.interview.basics.java.cocurrency;
import java.util.concurrent.TimeUnit;
/**
* Created with IntelliJ IDEA.
* User: stefanie
* Date: 11/4/14
* Time: 11:16 AM
*/
public class ThreadJoinSample {
static class Sleeper extends Thread {
private int duration;
public Sleeper(String name, int sleepTime){
super(name);
duration = sleepTime;
start();
}
public void run(){
try {
sleep(duration);
} catch (InterruptedException e) {
System.out.println(getName() + " was interrupted. " + "isInterrupted(): " + isInterrupted());
return;
}
System.out.println(getName() + " has awakened");
}
}
static class Joiner extends Thread{
private Sleeper sleeper;
public Joiner(String name, Sleeper sleeper){
super(name);
this.sleeper = sleeper;
start();
}
public void run(){
try {
System.out.println(getName() + " calling " + sleeper.getName() + " to join.");
sleeper.join();
} catch (InterruptedException e) {
System.out.println("Interrupted");
}
System.out.println(getName() + " join completed.");
}
}
public static void main(String[] args) throws InterruptedException {
Sleeper sleepy = new Sleeper("Sleepy", 2000);
Sleeper grumpy = new Sleeper("Grumpy", 2000);
Joiner dopey = new Joiner("Dopey", sleepy);
Joiner doc = new Joiner("Doc", grumpy);
TimeUnit.MILLISECONDS.sleep(1000);
grumpy.interrupt();
}
}