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();
		} 
        
	}
}

  

原文地址:https://www.cnblogs.com/javabigdata/p/7002812.html