按照惯例先吟诗一首:
 送崔九
唐代:裴迪
归山深浅去,须尽丘壑美。
莫学武陵人,暂游桃源里。
join()方法的作用是等待线程销毁。例如在main线程新起一个子线程,子线程需要做一些耗时造作,main线程想要得到子线程执行完成的数据,就必须等到执行完子线程再去执行,这时候就可以用join来解决。
基本使用
下面用代码来说明:    
MyThread类  
1 2 3 4 5 6 7 8 9 10 11 12 13 14 
  | class MyThread04 extends Thread{     @Override     public void run() {         try{             int value=(int)(Math.random()*1000);             System.out.println("thread04 value="+value);             Thread.sleep(value);         }catch (InterruptedException e){             e.printStackTrace();         }     } } 
  | 
 
YieldTest类     
1 2 3 4 5 6 7 8 9 10 11 12 13 
  | public class JoinTest {     public  static void main(String[] args){         MyThread04 thread04=new MyThread04();         thread04.start(); //        try { //            thread04.join(); //        }catch (InterruptedException e){ //            e.printStackTrace(); //        }         System.out.println("我想在thread04之后执行");     } } 
  | 
 
结果如下:     
我想在thread04之后执行
thread04 value=8
从结果上看,主线程和子线程是异步的,并没有在子线程执行完之后才执行,而是在子线程执行过程中就执行了主线程。如果想要实现同步的话,需要用到join()方法
将MyThread03类更改一下    
1 2 3 4 5 6 7 8 9 10 11 12 13 14 
  | public class JoinTest {     public  static void main(String[] args){         MyThread04 thread04=new MyThread04();         thread04.start();         try {             thread04.join();                     }catch (InterruptedException e){             e.printStackTrace();         } 		 System.out.println("我想在thread04之后执行");     } } 
  | 
 
结果如下:    
thread04 value=323
我想在thread04之后执行
         
        
    
        
    最后更新时间:
        
        这里可以写作者留言,标签和 hexo 中所有变量及辅助函数等均可调用,示例:
http://suxianglun.github.io/2017/06/01/Java线程常用方法之join()/