现有两个线程,要求必须下载完成之后才能显示
在jdk1.8之前,局部内部类中如果调用外部方法的局部变量,这个变量一定是final修饰的,但是从jdk1.8开始,局部内部类中可以直接调用外部方法的局部变量不用final修饰。
/**
* 有两个线程,一个用于下载,一个用于显示
* 这两个线程间是有顺序执行的
*/
public class MockDownAndShow {
public static void main(String[] args) {
final Thread downloadThread=new Thread("下载线程"){
@Override
public void run() {
System.out.println("开始下载。。。");
for(int i=0;i<=100;i+=10){
System.out.println("已下载"+i+"%");
}
System.out.println("下载完成。。。");
}
};
Runnable show=new Runnable() {
@Override
public void run() {
System.out.println("开始加载图片");
try {
downloadThread.join();
} catch (InterruptedException e) {
System.out.println("下载失败!");
e.printStackTrace();
return;
}
System.out.println("显示图片成功!");
}
};
Thread showThread=new Thread(show,"图片显示线程");
downloadThread.start();
showThread.start();
}
}
运行结果
开始加载图片
开始下载。。。
已下载0%
已下载10%
已下载20%
已下载30%
已下载40%
已下载50%
已下载60%
已下载70%
已下载80%
已下载90%
已下载100%
下载完成。。。
显示图片成功!
网友评论