概述

在jdk1.5之前,线程的创建有两种方式:一种是直接继承Thread,另外一种就是实现Runnable接口。

但这2种方式都存在一个问题就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者消息传递的方式来达到效果,这样使用起来就比较麻烦。

从Java
1.5开始,就提供了Callable类和Future类,通过它们可以在任务执行完毕之后得到任务执行结果。经过分析和总结,我们把异步计算的线程按照职责分为3部分:

计算模型

1、控制器(Controller):异步计算的控制线程,负责异步计算任务的分解和发起,把分解好的任务交给异步计算的worker线程去执行,发起异步计算后,controller可以获得Futrue的集合,将集合数据传递给collector,collector根据Future的状态来处理异步计算的结果;

2、处理器(Wroker):异步计算线程,负责具体的计算任务;

3、结果收集器(Collector):异步计算结果收集线程,从发起线程那里获得Future的集合,并负责监控Future的状态,根据Future的状态来处理异步计算的结果。

根据以上模型,构建的异步计算代码如下:

控制器
package com.ips.concurrent.future; import java.util.ArrayList; import
java.util.List;import java.util.concurrent.ExecutorServic

技术
©2019-2020 Toolsou All rights reserved,
python中delete怎么用_python中如何使用np.delete()方法?大厂Java岗春招必看:论一个面渣逆袭之路上必学得那些知识点3 4j不是合法的python表达式_3+4j不是合法的Python表达式。SQL综合题 员工单位综合题pyqt按钮调用python程序_PyQt:链接按钮到程序中的函数找出游戏的获胜者(java)看完这个去面试,稳过~~将硬盘转换成GPT分区格式python常用内置函数C语言(猜数字小游戏)