package book.test;
import java.util.ArrayList;
import java.util.List;
public class JoinDemo extends Thread{
int i;
Thread previousThread; //上一個線程
public JoinDemo(Thread previousThread,int i){
this.previousThread=previousThread;
this.i=i;
}
@Override
public void run() {
try {
// //調用上一個線程的join方法,大家可以自己演示的時候可以把這行代碼註釋掉
//調用join方法,阻塞當前線程,讓調用此方法的線程運行完才運行當前線程
previousThread.join();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("num:"+i);
}
public static void main(String[] args) {
Thread previousThread=Thread.currentThread();
List<Thread> ls=new ArrayList<Thread>();
for(int i=0;i<10;i++) {
//第一種
JoinDemo joinDemo = new JoinDemo(previousThread, i);//第一個參數傳的是上一個線程
joinDemo.start();
previousThread=joinDemo;
//第二種
// JoinDemo joinDemos = new JoinDemo(ls.size()>0?ls.get(i-1):previousThread, i);//第一個參數傳的是上一個線程
// ls.add(joinDemos);
// ls.add(joinDemos);
// joinDemos.start();
}
System.out.println("開始運行");
}
}
運行結果:
總結:
調用join方法,阻塞當前線程,讓調用此方法的線程運行完才運行當前線程