Java并发程序设计(十)设计模式与并发之Future模式
2017-09-18 15:52
375 查看
设计模式与并发之Future模式
核心思想:异步调用。
1 /** 2 * @author: Tang Jiujia 3 * @version: 2017/9/18 0018 15:22 4 */ 5 public interface Data { 6 7 String getResult(); 8 }
1 /** 2 * @author: Tang Jiujia 3 * @version: 2017/9/18 0018 15:23 4 */ 5 public class RealData implements Data{ 6 7 protected final String result; 8 9 public RealData(String para){ 10 StringBuffer bf=new StringBuffer(); 11 for (int i=0;i<10;i++){ 12 bf.append(para); 13 try{ 14 Thread.sleep(100); 15 }catch (Exception e){ 16 e.printStackTrace(); 17 } 18 } 19 result=bf.toString(); 20 } 21 22 @Override 23 public String getResult() { 24 return result; 25 } 26 }
1 public class FutureData implements Data{ 2 3 protected RealData realData=null; 4 protected boolean isReady=false; 5 6 public synchronized void setRealData(RealData realData){ 7 if(isReady){ 8 return; 9 } 10 11 this.realData=realData; 12 isReady=true; 13 notifyAll(); 14 } 15 16 @Override 17 public synchronized String getResult() { 18 while (!isReady){ 19 try{ 20 wait(); 21 }catch (Exception e){ 22 e.printStackTrace(); 23 } 24 } 25 return realData.result; 26 } 27 }
1 public class Client { 2 3 public Data request(final String queryStr){ 4 final FutureData futureData=new FutureData(); 5 new Thread(){ 6 @Override 7 public void run(){ 8 RealData realData=new RealData(queryStr); 9 futureData.setRealData(realData); 10 } 11 }.start(); 12 13 return futureData; //立即返回了futureData 14 } 15 }
1 public class MainClass { 2 3 public static void main(String[] args){ 4 Client client=new Client(); 5 Data data=client.request("name"); 6 System.out.println("请求完毕"); 7 try{ 8 Thread.sleep(2000); 9 }catch (Exception e){ 10 e.printStackTrace(); 11 } 12 System.out.println("数据="+data.getResult()); 13 } 14 }
相关文章推荐
- Java并发程序设计(十一)设计模式与并发之生产者-消费者模式
- future相比于其他并发设计模式的优势(“回调驱动(多线程环境下)”、“消息/事件驱动(Actor模型中))
- Java并发程序设计(九)设计模式与并发之不变模式
- 并发模型之Future设计模式
- Future模式,并发程序的设计模式
- Java高并发程序设计笔记(八)之Future设计模式
- Java并发程序设计(八)设计模式与并发之单例模式
- Java 进阶7 并发优化 1 并行程序的设计模式
- Java高并发程序-Chapter4 并行模式与算法(第二十六讲)Future 模式
- 互联网高并发架构的8种设计模式演化
- Proactor和Reactor模式_继续并发系统设计的扫盲
- 并发设计模式之Guarded Suspension模式
- 多线程设计模式--Future模式
- Java高并发程序设计笔记9之并发设计模式
- Python编程实战:运用设计模式、并发和程序库创建高质量程序 阅读笔记
- Proactor和Reactor模式_继续并发系统设计的扫盲
- Future设计模式
- Future --- 多线程设计模式
- Computing - Proactor和Reactor模式_继续并发系统设计的扫盲