Java多线程-join方法

当线程A执行到了B线程中的jion()方法时,A就会等待,等B线程都执行完时,A才会继续执行。

void:     join()    等待该线程终止。

假如有线程A,B和 C 线程,在B 线程中执行 A.join():指的是让 B 线程处于等待状态,剩下 A  和 C 执行,直到A线程执行结束(C是否结束没有影响),B线程才恢复执行.

void:     join(long millis)    等待该线程终止的时间最长为millis 毫秒。

JoinDemo.java假如有线程A,B和 C 线程,在B 线程中执行 A.join(int n):指的是让 B 线程处于等待状态,剩下 A  和 C 执行,但是此时 B 只等待 n 毫秒, n 毫秒之后无论A是否执行结束B线程都会恢复执行.

class Demo implements Runnable {
   public void run() {
      for (int i = 1; i <= 50; i++)
        System.out.println(Thread.currentThread().getName() + "......." + i);
   }
}

class JoinDemo {
   public static void main(String[] args) throws Exception {
      Demo d = new Demo();
      Thread t1 = new Thread(d, "线程1:");
      Thread t2 = new Thread(d, "线程2:");
      t1.start();
      t1.join();// 此时主线程会放弃执行资格,t1获得执行资格,
      // 直到t1执行完毕后main才能获取执行资格。
      t2.start();
      for (int i = 1; i <= 50; i++)
        System.out.println(Thread.currentThread().getName() + "......." + i);
   }
}