java多线程系列13 设计模式 Future 模式

Future 模式

类似于ajax请求  页面异步的进行后台请求

用户无需等待请求的结果 就可以继续浏览或者操作

核心就是:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑

 

JDK内置实现Future模式演示一下

public class RealData implements Callable<String> {
	String res = null;

	@Override
	public String call() throws Exception {
		Thread.sleep(5000); // 模拟处理数据的过程 并将结果放在res里面
		res = "result";
		return res;
	}

	public static void main(String[] args) {
		FutureTask<String> futureTask =   
                new FutureTask<String>(new RealData());  
        ExecutorService executor =   
                Executors.newFixedThreadPool(1);   
        executor.submit(futureTask);  
        //这里使用sleep 模拟 真实业务
        try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
	
			e.printStackTrace();
		}  
        
 
        try {
			System.out.println("res= " + futureTask.get()); //如果call()没有执行完成 get依然会等待  
		} catch (Exception e) {
			e.printStackTrace();
		} 
        
	}
}

  

posted on 2017-06-13 18:22  一只小蜗牛12138  阅读(103)  评论(0编辑  收藏  举报

导航