通过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();
}
}
执行结果如下: