join可以让调用线程等待,直到被调用线程执行完成之后,才开始接着执行当前线程
例子:
public class JoinTest { public static void main(String[] args) { System.out.println("存活的线程为"+Thread.activeCount()); Thread one = new Thread(new Runnable() { @Override public void run() { for (int i =0;i<10;i++){ try { Thread.sleep(10); }catch (Exception e){ e.printStackTrace(); } System.out.println("输出线程的个数为"+i); } } }); one.start(); System.out.println("存活的线程为"+Thread.activeCount()); try { one.join(); //主线程调用join方法,进入等待,等线程One执行完成后,才会接着往下执行 }catch (Exception e){ e.printStackTrace(); } System.out.println("线程执行完毕"); }
输出结果:
存活的线程为2
存活的线程为3
输出线程的个数为0
输出线程的个数为1
输出线程的个数为2
输出线程的个数为3
输出线程的个数为4
输出线程的个数为5
输出线程的个数为6
输出线程的个数为7
输出线程的个数为8
输出线程的个数为9
线程执行完毕