当有三个线程 T1,T2,T3,如何确保t2在t1后执行,t3在t2后执行?

join

问:当有三个线程 T1,T2,T3,如何确保t2在t1后执行,t3在t2后执行?
答:如果想让线程按照顺序执行,需要使用到join方法。

public class Main {

    public static void main(String[] args) {
        MyThread T1 = new MyThread("A");
        MyThread T2 = new MyThread("B");
        MyThread T3 = new MyThread("C");
        T1.start();
        T1.join();
        T2.start();
        T2.join();
        T3.start();
        T3.join();
    }

}

 class MyThread extends Thread {
    private String name;
    public MyThread(String name) {
        this.name = name;
    }
    
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println(name+":"+i);
        }
        
    }
}

join方法的所用:

1:Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行。
2:当我们调用某个线程的这个方法时, 这个方法会挂起调用线程,直到被调用线程结束执行,调用线程才会继续执行。

join方法中传递参数和不传递参数的区别?

  • join方法中传入参数:
T1.start();
T1.join(10);
T2.start();
  • 当join中传递参数,join(10);说明T2线程等待T1线程10秒,在这10秒之内是同步操作,10秒之后T1和T2线程就是异步操作。
  • 注意:
  • 如果是join(0),不是说等待0秒,而是无限等待,知道T1线程执行完毕,才能执行T2线程。

猜你喜欢

转载自blog.csdn.net/m0_37392489/article/details/84999347