Mega Code Archive

 
Categories / Java / Threads
 

Understanding join()

// : c13:Joining.java // Understanding join(). // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 // www.BruceEckel.com. See copyright notice in CopyRight.txt. 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");   } } class Joiner extends Thread {   private Sleeper sleeper;   public Joiner(String name, Sleeper sleeper) {     super(name);     this.sleeper = sleeper;     start();   }   public void run() {     try {       sleeper.join();     } catch (InterruptedException e) {       throw new RuntimeException(e);     }     System.out.println(getName() + " join completed");   } } public class Joining {   public static void main(String[] args) {     Sleeper sleepy = new Sleeper("Sleepy", 1500), grumpy = new Sleeper(         "Grumpy", 1500);     Joiner dopey = new Joiner("Dopey", sleepy), doc = new Joiner("Doc",         grumpy);     grumpy.interrupt();   } } ///:~