线程join()方法

多线程join(),可以有无参的和有参的,join(long mills).join方法是Thread 提供的方法,join方法主要用于实现当此线程死亡后开始执行后面的代码是阻塞型的。对于join(long mills)方法,可实现当等待线程死亡时间为mills,也就意味着最多等待mills时间,可执行后续代码

join源码分析如下:


特点:能够阻塞其他线程的执行

场景:ABC3个线程实现顺序执行,即执行A->B->C,则B中run方法中 a.join(),C中 b.join(),跟ABC三个线程的启动顺序无关

示例代码如下:

public class ThreadCommunication2 {
    public static void main(String[] args) {
        Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("I'm comming first!");
            }
        });
        Thread thread2 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(20);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                try {
                    thread1.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("jack commmig second");
            }
        });
        Thread thread3 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(20);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                try {
                    thread2.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("rose commmig thrid");
            }
        });

        thread2.start();
        thread3.start();
        thread1.start();
    }
}

运行结果:

I'm comming first!
jack commmig second
rose commmig thrid



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值