Java多线程专题-多线程join方法的作用

Join方法概述

join作用是让其他线程变为等待。

t1.join();  // 让其他线程变为等待,直到当前t1线程执行完毕,才释放。

thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

class JoinThread implements Runnable {

    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + "---i:" + i);
        }
    }
}

public class JoinThreadDemo {

	public static void main(String[] args) {
        JoinThread joinThread = new JoinThread();
        Thread t1 = new Thread(joinThread);
        Thread t2 = new Thread(joinThread);
        t1.start();
        t2.start();
        try {
            //其他线程变为等待状态,等t1线程执行完成之后才能执行join方法。
            t1.join();
        } catch (Exception e) {

        }
        for (int i = 0; i < 100; i++) {
            System.out.println("main ---i:" + i);
        }
    }

}

运行结果:

Thread-0---i:0
Thread-1---i:0
Thread-0---i:1
Thread-0---i:2
Thread-1---i:1
main ---i:0
Thread-1---i:2
main ---i:1
main ---i:2

多次运行发现,Thread-0 永远在执行完毕后才会打印main ---i ,执行thread-0时,其他线程变为阻塞状态

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页