JDK中的Future模式

RealDataJDK类:

public class RealDataJDK implements Callable<String> {
	protected String data;

	public RealDataJDK(String data) {
		this.data = data;
	}

	@Override
	public String call() throws Exception {
		//利用sleep方法来表示真是业务是非常缓慢的
		try {
			System.out.println("kaishi 耗时处理");
			Thread.sleep(1000);
			System.out.println("kaishi 耗时处理完成");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		return data;
	}
}

Application

public class Application {
	public static void main(String[] args) throws Exception {
		FutureTask<String> futureTask = 
				new FutureTask<String>(new RealDataJDK("name"));
		ExecutorService executor = 
				Executors.newFixedThreadPool(1); //使用线程池
		//执行FutureTask,相当于上例中的client.request("name")发送请求
		executor.submit(futureTask);
		//这里可以用一个sleep代替对其他业务逻辑的处理
		//在处理这些业务逻辑过程中,RealData也正在创建,从而充分了利用等待时间
		System.out.println("处理自己的事情");
		Thread.sleep(500);
		System.out.println("处理自己的事情完成");
		//使用真实数据
		//如果call()没有执行完成依然会等待
		System.out.println("数据=" + futureTask.get());
		executor.shutdown();
	}
}

  

原文地址:https://www.cnblogs.com/sg9527/p/8125299.html