Object关于线程的方法
wait()/notify()
当一个线程调用了某个对象的wait()方法后,该线程进入等待阻塞.就是在调用wait()方法的对象上等待.
只有调用了这个对象的notify()方法后,该线程才能解除等待阻塞,进入runnable状态继续并发运行.
public class WaitNotifyDemo {
public static boolean finish=false;
public static void main(String[] args) {
Thread download=new Thread(){
@Override
public void run() {
System.out.println("正在下载图片");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("下载完毕!");
finish=true;
synchronized (this){
this.notify();}
}
};
//显示图片的线程
Thread show=new Thread(()->{
try {synchronized (download){
/*
在download对象上等待
show线程进入等待阻塞,知道download对象的
notify()方法被执行,才能解除
*/
download.wait();}
} catch (InterruptedException e) {
e.printStackTrace();
}
if(!finish){
throw new RuntimeException("图片显示错误");
}else{System.out.println("显示图片");}
});
show.start();
download.start();
}
}