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