本文共 2372 字,大约阅读时间需要 7 分钟。
public interface Data { String getResult();}
public class RealData implements Data{ protected final String result; public RealData(String para){ StringBuilder sb=new StringBuilder(); for(int i=0;i<10;i++){ sb.append(para); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } result=sb.toString(); } @Override public String getResult() { return null; }}
public 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 (InterruptedException e){ e.printStackTrace(); } } return realData.result; }}
public class Client { public Data request(final String queryStr){ final FutureData future=new FutureData(); new Thread(()->{ RealData realData=new RealData(queryStr); future.setRealData(realData); }).start(); return future; }}
public class Main { 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) { e.printStackTrace(); } //使用真实的数据 System.out.println("数据 = "+data.getResult()); }}
转载地址:http://lqjqi.baihongyu.com/