java中线程 Thread.join() 的作用

概念:
        thread.join() 方法的主要作用是让当前线程(通常是父线程或主线程)等待另一个线程(子线程)执行完毕后再继续执行‌。具体来说,当一个线程调用了另一个线程的join方法后,当前线程会暂停执行,直到被join的线程执行完毕。这样,可以确保在子线程完成其任务后再继续执行父线程的操作

验证:

1、示例代码

public class TestThreadOne {
    String name = "test";

    public void setNameStr(String name) {
        this.name = name;
    }

    public void bgSetName() throws Exception {
        Thread t = new Thread() {
            @Override
            public void run() {
                setNameStr("test2");
            }
        };
        t.start();
        t.join();
        System.out.println(name);
    }

    public void bgSetNameTwo() throws Exception {
        Thread t = new Thread() {
            @Override
            public void run() {
                setNameStr("test3");
            }
        };
        t.start();
        //t.join();
        System.out.println(name);
    }


    public static void main(String[] args) throws Exception {
        new TestThreadOne().bgSetName();
        new TestThreadOne().bgSetNameTwo();
        System.out.println("主线程执行完毕了");
    }

}

输出:

test2
test
主线程执行完毕了

小结:
1、由结果可以看出,由两个子线程给父线程(主线程)中的name变量赋值
2、一个线程使用join()方法、一个线程不使用join()方法,结果使用 join() 方法可以正确赋值主线程的变量,不使用 join() 方法无法正确赋值主线程变量
3、得出结论,thread.join() 方法具有等待作用,也就是主线程会等待调用join()方法的子线程执行完毕后,主线程才会继续执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值