package com.example.demo.multithread;
class T1 extends Thread {
public Thread t;
public T1(Thread t) {
this.t = t;
}
public void run() {
try {
if (t != null) {
t.join();
}
System.out.println("a");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class T2 extends Thread {
public Thread t;
public T2(Thread t) {
this.t = t;
}
public void run() {
try {
if (t != null) {
t.join();
}
System.out.println("b");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class T3 extends Thread {
public Thread t;
public T3(Thread t) {
this.t = t;
}
public void run() {
try {
if (t != null) {
t.join();
}
System.out.println("c");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class T {
public static void main(String[] args) throws InterruptedException {
Thread t1 = new T1(null);
Thread t2 = new T2(t1);
Thread t3 = new T3(t2);
t2.start();
t1.start();
t3.start();
}
}