【并发编程】Future和FutureTask以及CompletionService
Future接口

- 代表异步计算的执行结果;
 - 用于可取消的task;(比使用interrupt实现取消要方便 )
 

FutureTask类

FutureTask任务的创建--通过构造函数
- Callable;
 - Runnable;
 - Future;
 


- Callable可以有返回值,且可以抛出异常;
 - Runnable没有返回值,且不抛出异常;
 
FutureTask任务的创建,可以通过Callable和Runnable两个任务类进行创建,即对Callable和Runnable进行封装,见下面的构造函数:


get():过去异步计算的结果
done():异步计算完成后调用的回调函数 ==>CompletionService

- Executor;==>用于提交任务使用
 - BlockingQueue; ==>当任务完成后,会将task对应的Future保存起来;
 





有时间补充。。。。
附件列表
【并发编程】Future和FutureTask以及CompletionService的更多相关文章
- 并发编程-Future+callable+FutureTask 闭锁机制
		
项目中经常有些任务需要异步(提交到线程池中)去执行,而主线程往往需要知道异步执行产生的结果,这时我们要怎么做呢?用runnable是无法实现的,我们需要用callable实现. FutureTask ...
 - 多线程并发执行任务,取结果归集。终极总结:Future、FutureTask、CompletionService、CompletableFuture
		
目录 1.Futrue 2.FutureTask 3.CompletionService 4.CompletableFuture 5.总结 ================正文分割线========= ...
 - Java并发编程:Future接口、FutureTask类
		
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就 ...
 - 【多线程】Future和FutureTask以及CompletionService
		
Future接口 此接口主要用于: 代表异步计算的执行结果: 用于可取消的task:(比使用interrupt实现取消要方便 ) FutureTask类 FutureTask是Future的一个实现类 ...
 - Java并发编程核心方法与框架-CompletionService的使用
		
接口CompletionService的功能是以异步的方式一边生产新的任务,一边处理已完成任务的结果,这样可以将执行任务与处理任务分离.使用submit()执行任务,使用take取得已完成的任务,并按 ...
 - JAVA并发编程学习笔记------FutureTask
		
FutureTask是Future和Callable的结合体.传统的代码是这样写的Future f = executor.submit(new Callable()); 然后通过Future来取得计算 ...
 - Java并发编程笔记之FutureTask源码分析
		
FutureTask可用于异步获取执行结果或取消执行任务的场景.通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过Fu ...
 - Java并发编程:Callable、Future和FutureTask
		
作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...
 - (转)Java并发编程:Callable、Future和FutureTask
		
Java并发编程:Callable.Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一 ...
 
随机推荐
- 【eclipse】svn在线安装
			
Subclipse1.8 http://subclipse.tigris.org/update_1.8.x
 - ElasticSearch安装和head插件安装
			
本文主要介绍elasticsearch5.0安装及head插件安装.确保系统已经安装好jdk1.8以上,操作系统CentOS6以上. 一.elasticsearch安装配置 1.官网下载源码包 下载不 ...
 - Python yield 用法
			
一.环境 python 3.6 二.yield 说明 yield 是一个生成器,可以用于迭代.也是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面(右边)的值. 重点是: ...
 - ✅javascript 语法:附加子节点
			
received: function(data) { $("#notifications").prepend(data.html); } 如何用原生js写出jquery的功能: 先 ...
 - mybatis的xml配置中if text判断不为0
			
问题:money_search_end != ‘0’为0时依然继续执行 解决方案: 1.单个字符要用''.toString() 2.用双引号“”,当然text的引号要改为单引号‘’ <if te ...
 - 1003: [ZJOI2006]物流运输   最短路+dp
			
https://www.lydsy.com/JudgeOnline/problem.php?id=1003 数据范围很小,怎么瞎搞都行,n方dp,然后跑出最短路暴力转移,需要注意的是不能使用的可能有多 ...
 - StringUtils工具类的isBlank()方法使用说明
 - Java——基本概念
			
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
 - 非关联容器|hash|unordered_map/multimap,unordered_set/multiset
			
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
 - eclipes常用快捷键
			
Eclipes快捷键 alt + / 代码补全,自动提示 ctrl + o 显示类中的方法属性,再按一次ctrl + o,显示更多的变量 ctrl + d 删除当前行 ctrl + / 单行注释或者选 ...