合并方法join

声明

版权声明:本文参考CSDN博主「一个快乐的野指针~」的原创文章,仅用作个人学习,特此声明
原文链接: https://blog.csdn.net/qq_44715943/article/details/116714584

合并方法join

1、概述

方法名 作用
void join() 将一个线程合并到当前线程中,当前线程受阻塞,加入的线程执行直到结束
void join(long millis) 接上条,等待该线程终止的时间最长为 millis 毫秒
void join(long millis, int nanos) 接第一条,等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒

需要注意的是:直到合并进来的线程结束,当前线程才可以继续执行


2、eg.

class MyThread1 extends Thread {
	public void doSome(){
		MyThread2 t = new MyThread2();
		t.join(); // 当前线程进入阻塞,t线程执行,直到t线程结束。当前线程才可以继续。
	}
}

class MyThread2 extends Thread{

}
/**
 * join方法测试
 */
public class JoinTest {
    public static void main(String[] args) {
        System.out.println("main begin");

        Thread t = new Thread(new MyRunnable2());
        t.setName("t");
        t.start();

        //合并线程
        try {
            t.join(); // t合并到当前线程中,当前线程受阻塞,t线程执行直到结束。
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("main over");
    }
}

class MyRunnable2 implements Runnable {

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


3、总结

main线程最先开始执行,输出main begin

之后t线程合并进main线程,main线程受阻塞暂停,t线程执行直到结束

t线程结束后main线程继续执行,输出main over

posted @ 2022-04-19 18:47  无关风月7707  阅读(38)  评论(0编辑  收藏  举报