package com.module.other;
public class Test01 {
public static void main(String[] args) {
Client client = new Client();
Data data = client.request("name");
System.out.println("请求完毕");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("数据:" + data.getResult());
}
}
interface Data {
String getResult();
}
class RealData implements Data {
protected final String result;
public RealData(String data) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result = data + "666";
}
@Override
public String getResult() {
return result;
}
}
class FutureData implements Data {
protected RealData realData = null;
protected boolean isReady = false;
public synchronized void setRealData(RealData realData) {
if (isReady)
return;
this.realData = realData;
isReady = true;
notifyAll();
}
@Override
public synchronized String getResult() {
while (!isReady) {
try {
wait();
} catch (Exception e) {
// TODO: handle exception
}
}
return realData.getResult();
}
}
class Client {
public Data request(final String queryStr) {
final FutureData future = new FutureData();
new Thread() {
public void run() {
RealData realData = new RealData(queryStr);
future.setRealData(realData);
};
}.start();
return future;
}
}
并行程序设计模式之 -> Future模式
猜你喜欢
转载自blog.csdn.net/qq_37769323/article/details/104202130
今日推荐
周排行