package socket;
/**
* 线程提供了一个方法:
* void join()
* 该方法可以协助线程之间同步运行
*
* 同步运行:运行有顺序
* 一部运行:运行代码无顺序,多线程并发运行就是
* 是一部运行
* @author ckx
*
*/
public class JoinDemo {
private static boolean isFinish = false;
public static void main(String[] args) {
Thread download = new Thread(){
public void run(){
System.out.println("down: 开始下载图片...");
for (int i = 0; i < 100; i++) {
System.out.println("down:"+"%");
try {
Thread.sleep(20);
} catch (InterruptedException e) {
}
}
System.out.println("down:下载图片完毕!");
isFinish = true;
}
};
Thread show = new Thread(){
public void run(){
System.out.println("show:开始显示图片");
//加载图片前应先等待下载线程将图片下载完毕
try {
/*
* show线程在调用download。join()方法后
* 就进入阻塞装状态,直到download线程
* 的run 方法执行完毕才会解除阻塞
*/
download.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(!isFinish){
throw new RuntimeException("加载图片失败");
}
System.out.println("show:显示图片完毕");
}
};
download.start();
show.start();
}
}
JAVA阻塞线程
最新推荐文章于 2021-12-29 19:22:56 发布