之前给大家分享了使用Callable+Future获取执行结果的java示例,那么下面要给大家分享的就是使用Callable+FutureTask获取执行结果的java示例,一起来看看吧。
public class Test { public static void main(String[] args) { //方式1 ExecutorService executor = Executors.newCachedThreadPool(); Task task = new Task(); FutureTask < Integer > futureTask = new FutureTask < Integer > (task); executor.submit(futureTask); executor.shutdown(); //方式2,注意这种方式和第一种方式效果是类似的,只不过一个使用的是ExecutorService,一个使用的是Thread /*Task task = new Task(); FutureTask<Integer> futureTask = new FutureTask<Integer>(task); Thread thread = new Thread(futureTask); thread.start();*/ try { Thread.sleep(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } System.out.println("主线程在执行任务"); try { System.out.println("task运行结果" + futureTask.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } System.out.println("所有任务执行完毕"); } } class Task implements Callable < Integer > { @Override 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; } }
假如,是为了能够取消性而使用的Future,但是,又不能够提供可用的结果。
那么,就可以声明Future形式类型,并且返回null作为底层任务的结果。
更多的java实例,请继续来奇Q工具网了解吧。
推荐阅读: