FUTURE EXAMPLE =========== package com.futuretest; import java.util.concurrent.*; /** * Created by jc6a on 2016/1/29. */ public class Test { public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool(); Task task = new Task(); Future<Integer> result = executorService.submit(task); executorService.shutdown(); try { Thread.sleep(1000); } catch(Exception e) { e.printStackTrace(); } System.out.println("主线程在执行任务"); try { System.out.println("task的运行结果:"+result.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } System.out.println("所有任务执行完毕"); } } class Task implements Callable<Integer> { public Integer call() throws Exception { System.out.println(); Thread.sleep(3000); int sum = 0; for(int i=0;i<100;i++) { sum +=i; } return sum; } }
FUTURETASK EXAMPLE
=====================
package com.futuretest; import java.util.concurrent.*; /** * Created by jc6a on 2016/1/29. */ public class Test1 { public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool(); Task1 task = new Task1(); FutureTask<Integer> futureTask = new FutureTask<Integer>(task); // executorService.submit(futureTask); // executorService.shutdown(); System.out.println(futureTask.isDone()); System.out.println(futureTask.isCancelled()); Thread thread = new Thread(futureTask); thread.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程在执行任务"); try { System.out.println("task运行结果:"+futureTask.get(1000,TimeUnit.MILLISECONDS)); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } System.out.println(futureTask.isDone()); } } class Task1 implements Callable<Integer> { public Integer call() throws Exception { System.out.println("子线程在进行计算"); Thread.sleep(500); int sum = 0; for(int i=0;i<100;i++) { sum +=i; } return sum; } }