The Java thread join() method confuses me a bit. I have following example
class MyThread extends Thread { private String name; private int sleepTime; private Thread waitsFor; MyThread(String name, int stime, Thread wa) { … } public void run() { System.out.print("["+name+" "); try { Thread.sleep(sleepTime); } catch(InterruptedException ie) { } System.out.print(name+"? "); if (!(waitsFor == null)) try { waitsFor.join(); } catch(InterruptedException ie) { } System.out.print(name+"] "); And
public class JoinTest2 { public static void main (String [] args) { Thread t1 = new MyThread("1",1000,null); Thread t2 = new MyThread("2",4000,t1); Thread t3 = new MyThread("3",600,t2); Thread t4 = new MyThread("4",500,t3); t1.start(); t2.start(); t3.start(); t4.start(); } } In which order are the threads terminated?
waitsFor = wainside the constructor.