JAVA 异步加载数据模式
本片文章将实现一个简单的异步加载数据方案:
//数据接口
public interface Data{
public String getData();
}
//真实数据
public class RealData implements Data{
@Override
public String getData() {
return "真实数据";
}
}
//仿真数据
public class MockData implements Data{
private RealData data;
//private volatile boolean queryCompleted;
private Object lock = new Object();
@Override
public String getData() {
/*while(!queryCompleted){
}*/
synchronized (lock) {
try {
System.out.println("------wait-------");
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return data.getData();
}
public void setData(RealData data) {
this.data = data;
//this.queryCompleted = true;
synchronized (lock) {
lock.notify();
}
}
}
//测试类
public class Test{
public static void main(String[] args) {
Query query = new Query();
Data data = query.find();
System.out.println("-----------------");
System.out.println(data.getData());
System.out.println("--------3333333---------");
}
}