多线程的 join()方法简单应用

通过join方法可以使线程按照一定顺序执行。
作用:join()方法的作用是等待线程对象销毁。
join()方法具有能使线程排队运行的作用,有点类似于同步的效果。
join()除了无参方法之外,还重载了join(毫秒)的方法,此方法与sleep(毫秒)的区别是:
(1)、 join()操作底层用wait()来实现,可以释放锁。
( 2)、 sleep()不会释放锁。
join与synchronize的区别:
(1)、join在内部使用wait()方法进行等待,底层用wait()来实现。
(2)、synchronize关键字是以“对象监视器”为原理做同步操作。

以上都是一些join()方法的小知识,接下来具体用实例来看一下join方法如何使线程按一定方式执行。
如有以下线程A B C ,通过join()使线程按照C B A 顺序来执行:

public class ThreadGY1803 extends Thread{//通过继承来创建线程
private Thread thread;
    public ThreadGY1803(Thread thread) {
        this.thread =thread;
    }
    public ThreadGY1803(){
        this.thread=null;
    }

    @Override
    public void run() {//重写run方法
        if (thread!=null){
            try {
                this.join(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println(Thread.currentThread().getName());
    }


    public static void main(String[] args) {//join()等待线程执行结束才继续执行 ,假如在a线程中b线程进行b.join操作,a等待b结束再执行。
       ThreadGY1803 C = new ThreadGY1803();
        C.setName("C");
       ThreadGY1803 B = new ThreadGY1803(C);
       B.setName("B");
        A.start();
       B.start();
       C.start();

    }
}

执行结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43352406/article/details/88912816