Java 并发编程之 Callable 和 Future
ExecutorService 执行完Callable 任务后,返回 Future 对象,Future 对象表示一个任务的生命周期,包含任务的状态和任务的结果对象。
Future的get方法可以获得 Callable任务执行后的结果,isDone, isCanceled 方法判断线程状态。
使用也很简单,
public class CallableTest implements Callable<String> {public static void main(String args[]) {ExecutorService executor = Executors.newFixedThreadPool(20);List<Future<String>> list = new ArrayList<Future<String>>();Callable<String> callable = new CallableTest();for (int i=0; i<100; i++) {Future<String> future = executor.submit(callable);list.add(future);}for (Future<String> future : list) {try {// Future.get() 方法会等待线程结束System.out.println(future.get());} catch (InterruptedException | ExecutionException e) {e.printStackTrace();}}// 结束线程池executor.shutdown();}@Overridepublic String call() throws Exception {TimeUnit.SECONDS.sleep(2);return Thread.currentThread().getName();}
}
Java 并发编程之 Callable 和 Future相关推荐
- Java多线程之Callable、Future和FutureTask
Java多线程之Callable接口 自己想总结一下的,看到一篇总结的更好的博客,就转载了,突然感觉真轻松,哈哈哈哈 文章转载于:Matrix海子:Java并发编程:Callable.Future和F ...
- zbb20180929 thread java并发编程之Condition
java并发编程之Condition 引言 在java中,对于任意一个java对象,它都拥有一组定义在java.lang.Object上监视器方法,包括wait(),wait(long timeout ...
- 15、Java并发编程:Callable、Future和FutureTask
Java并发编程:Callable.Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一 ...
- java并发编程之4——Java锁分解锁分段技术
转载自 java并发编程之4--Java锁分解锁分段技术 并发编程的所有问题,最后都转换成了,"有状态bean"的状态的同步与互斥修改问题.而最后提出的解决"有状态bea ...
- Java 并发编程之美:并发编程高级篇之一-chat
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...
- Java 并发编程之美:并发编程高级篇之一
借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...
- Java并发编程之CAS第三篇-CAS的缺点
Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...
- Java并发编程之CyclicBarrier详解
简介 栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生.栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行.闭锁用于等待事件,而栅栏用于等待其他线程. CyclicBarrier ...
- Java并发编程:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就 ...
最新文章
- (转)使用 /proc 文件系统来访问 Linux 内核的内容
- Hashtable源码注释
- 组合表头_单双斜线表头——520,想单就单,想双就双
- [渝粤教育] 莆田学院 电机与拖动基础(一) 参考 资料
- html5表单密码验证及提示,HTML5表单及其验证(示例代码)
- 深入了解Struts2返回JSON数据的原理及具体应用范例
- 大话集群和负载均衡,太强了!
- 我的WCF之旅(10):如何在WCF进行Exception Handling
- GB28181协议之录像回放
- Unity3D开发体验
- 写在博士旅程之前|博士第一年|博士第三年|博士第四年
- WPF快速学习--一布局
- YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性
- 电脑实时监控信息:CPU 内存 GPU使用率在桌面上动态展现
- 小红书3大新功能上线,提升笔记转化率和品牌投放效果
- 客户流失预测 —— 资源汇总
- STM32G474RE DAC+OPAMP
- 假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和7升。问题是如何只用这2个水壶从池塘里取得6升的水?
- ERP服务器性能改善,ERP系统的性能优化及其实现
- Linux分区大小调整