一、join线程
Thread类提供了让一个线程等待另一个线程完成的方法——join()方法。当线程A执行时,调用另一个处于就绪状态的线程B的join()方法,线程A会被阻塞,直到线程B执行完为止。join()方法通常由使用线程的程序调用,以将大问题划分为许多小问题,每个小问题分配一个线程,当所有小问题都得到处理后,再调用主线程进一步操作。
下面是代码示例:
public class ThreadJoin extends Thread {
public static void main(String[] args) throws InterruptedException {
//把主线程的名字改为线程A
Thread.currentThread().setName("线程A");
//创建线程C,和线程A并发执行
new ThreadJoin("线程C").start();
for(int i = 0;i < 10;i++) {
if(i == 5) {
//创建线程B
ThreadJoin thread_B = new ThreadJoin("线程B");
thread_B.start();
/*
* 线程A在i等于5的时候创建并启动线程B,并且调用了线程B的join()方法,
* 调用了该方法以后,线程A必须等到线程B执行完成以后才会向下执行
*/
thread_B.join();
}
System.out.println(Thread.currentThread().getName() + " " + i);
}
}
public ThreadJoin(String name) {
super(name);
}
public void run() {
for(int i = 0;i < 5;i++) {
System.out.println(this.getName() + " " + i);
}
}
}
代码执行结果如下图: