Future是一个接口表示异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。Future提供了get()、cancel()、isCancel()、isDone()四种方法,表示Future有三种功能:
1、判断任务是否完成
2、中断任务
3、获取任务执行结果
Callable
Callable和rRunnable差不多,两者都是为那些其实例可能被另一个线程执行的类而设计的,最主要的差别在于Runnable不会返回线程运算结果,Callable可以(假如线程需要返回运行结果)
1 public class CallableAndFuture { 2 public static class CallableThread implements Callable<String> { 3 4 @Override 5 public String call() throws Exception { 6 Thread.sleep(3000); 7 System.out.println("方法A过了3秒钟才返回数据"); 8 return "A返回结果"; 9 } 10 11 } 12 13 public static void main(String[] args) throws InterruptedException, ExecutionException { 14 ExecutorService newCachedThreadPool = Executors.newCachedThreadPool(); 15 CallableThread cThread = new CallableThread(); 16 Future<String> submit = newCachedThreadPool.submit(cThread); 17 System.out.println(submit.get()); 18 } 19 20 }
输出:
方法A过了3秒钟才返回数据
A返回结果