join : 当前等待其他线程执行结束 之后 再继续执行
线程一:开始执行,执行过程中暂停,让线程二开始执行,当线程二执行结束后,线程一接着执行
void join() :等待该线程终止
ex:
public class Demo {
public static void main(String[] args) {
Download d = new Download();
Show s = new Show(d);//把下载线程对象作为Show的构造方案方法参数
s.start();
d.start();
}
}
//显式图片的线程
class Show extends Thread{
private Download d;
public Show(Download d) {
super();
this.d = d;
}
@Override
public void run() {
System.out.println("开始显示 ...");
try {
//等待下载线程执行结束,自己再继续执行
d.join();//自己暂停,让d开始执行,d执行结束后,自己继续执行
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("下载完成 ==》显示 ...");
}
}
//下载图片的线程
class Download extends Thread{
@Override
public void run() {
for(int i = 1;i <= 10;i++){
System.out.println("下载进度:" + i*10 + "%");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
运行结果图: