検索

ホームページ  >  に質問  >  本文

java - 对main线程使用join方法,为什么main线程处于一直阻塞状态?

public class JoinTest {

public static void main(String[] args) throws InterruptedException {
    MyThread3 thread=new MyThread3();
    thread.start();
    //thread.join(1);//将主线程加入到子线程后面,不过如果子线程在1毫秒时间内没执行完,则主线程便不再等待它执行完,进入就绪状态,等待cpu调度
    System.out.println(Thread.currentThread());
    Thread.currentThread().join();
    for(int i=0;i<30;i++){
        System.out.println(Thread.currentThread().getName() + "线程第" + i + "次执行!");
    }
}

}

class MyThread3 extends Thread {

@Override
public void run() {
    
    for (int i = 0; i < 1000; i++) {
        try {
            System.out.println(this.getName() + "线程第" + i + "次执行!");
            Thread.sleep(1);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

}

高洛峰高洛峰2887日前427

全員に返信(1)返信します

  • PHP中文网

    PHP中文网2017-04-17 18:00:52

    では、まず join 関数が何に使用されるのかを知る必要があります。まずドキュメントを見てみましょう:

    リーリー

    最初の文にWaits for this thread to dieとあるように、メインスレッドで「現在のスレッドが終了する前にメインスレッドが終了するまで待たなければなりません」を実行すると、無限ループになってしまいませんか?

    返事
    0
  • キャンセル返事