join(long millis)如何在以下示例中起作用?

时间:2016-08-09 13:02:35

标签: java multithreading

class TestJoinMethod2 extends Thread{  
 public void run(){  
  for(int i=1;i<=5;i++){  
   try{  
    Thread.sleep(500);  
   }catch(Exception e){System.out.println(e);}  
  System.out.println(Thread.currentThread().getName());  
  }  
 }  
public static void main(String args[]){  
 TestJoinMethod2 t1=new TestJoinMethod2();  
 TestJoinMethod2 t2=new TestJoinMethod2();  
 TestJoinMethod2 t3=new TestJoinMethod2();  
 t1.start();  
 try{  
  t1.join(1500);  
 }catch(Exception e){System.out.println(e);}  

 t2.start();  
 t3.start();  
 }  

}
我得到的输出如下所示

Thread-0
Thread-0
Thread-0
Thread-1
Thread-2
Thread-0
Thread-1
Thread-2
Thread-0
Thread-1
Thread-2
Thread-1
Thread-2
Thread-1
Thread-2

特定方法join(long millis)描述了线程最多等待毫秒毫秒。 现在我的问题是,如果Thread-0在1500毫秒之后(即前3次之后)死亡,那么之后如何执行呢?

1 个答案:

答案 0 :(得分:2)

join(long)方法等待线程以最多给定的毫秒数。由于t1在1500毫秒后没有完成,所以加入调用只是让主线程等待1500毫秒。

https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#join-long-