脚本宝典收集整理的这篇文章主要介绍了Think In Java 读书笔记:Concurrency,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
package com.snda.sync.impl.test; import java.util.ArrayList; import java.util.concurrent.*; /** * Executor类是一种有效的广泛使用的以工作队列为基础的的线程池的正确实现,无须尝试编写自己的线程池,这样容易出错。 * Callable是并发编程库Concurrent新添加的类,它提供的call()方法可以返回各线程的返回值 * Callable 与 future :http://bLOG.csdn.net/ghsau/article/details/7451464 * Callable 接口类似于Runnable但是Callable无法返回结果也无法返回异常。Callable返回的结果可以被Future拿到。 * 通过submit来执行Callable线程并取得线程的返回值 * * 在Java中如果需要设定代码执行的最长时间,即超时,可以用Java的ExecutorService 类配合Future接口来实现,Future接口 * 是Java线程的Future模式的实现,可以来进行异步运算。 * Created by xuyifei on 14-4-22. */ class TaskWithResult implements Callable<String> { private int id; public TaskWithResult(int id) { this.id = id; } @Override public String call() throws Exception { return "result of TaskWithResult " + id; } } public class CallableDemo { public static void main(String[] args) { ExecutorService exec = Executors.newCachedThreadPool(); ArrayList<Future<String>> results = new ArrayList<>(); for (int i = 0; i < 10; i++) { results.add(exec.submit(new TaskWithResult(i))); } for (Future<String> fs : results) { try { System.out.println(fs.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } finally { exec.shutdown(); } } } }
以上是脚本宝典为你收集整理的Think In Java 读书笔记:Concurrency全部内容,希望文章能够帮你解决Think In Java 读书笔记:Concurrency所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。