(1)Callable接口更像是Runnable接口的增强版,相比较Runable接口,Call()方法新增捕获和抛出异常的功能;Call()方法可以返回值<br>
(2)Future接口提供了一个实现类FutureTask实现类,FutureTaks类用来保存Call()方法的返回值,并作为Thread类的target。<br>
(3)调用FutureTask的get()方法来获取返回值 import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask; /**
* (1)创建Callable接口的实现类,并重写call()方法,该call()方法作为线程的执行体,且有返回值
* (2)创建了Callable接口的实现类的实例,并用FutureTask()方法包装对象,该FutureTask()对象实现了
* 将对象的返回值包装的功能
* (3)使用FutureTask对象将Thread对象的target,创建并启动线程
* (4)调用FutureTask对象的get()方法获得子线程执行结束后的返回值
* */
public class Callable_Future implements Callable<Integer> { @Override
public Integer call() throws Exception { //重写Callable接口中的call()方法 int i=0;
for(;i<100;i++) {
System.out.println(Thread.currentThread().getName()+" "+i);
}
return i;
} public static void main(String[] args) throws InterruptedException, ExecutionException {
//创建Callable的对象
Callable_Future ca=new Callable_Future();
FutureTask<Integer> ft=new FutureTask<Integer>(ca);
for(int i=0;i<100;i++) {
//返回值主线程的名称和执行代号
System.out.println(Thread.currentThread().getName()+" "+i);
if(i==20) {
new Thread(ft,"Callable线程").start();
//该方法将导致主线程被阻塞,直到call()方法结束并返回为止
//System.out.println("子线程的返回值"+ft.get());
}
}
try{
System.out.println("子线程的返回值"+ft.get());
}catch (Exception e) {
e.printStackTrace();
} }
}

  

最新文章

  1. Bundle包的制作与使用
  2. Android Studio导入项目遇到的问题
  3. Thinking in Java——笔记(11)
  4. ASM:《X86汇编语言-从实模式到保护模式》第11章:进入保护模式
  5. 有关PowerShell脚本你必须知道的十个基本概念
  6. Python中的join()函数split()函数
  7. Linux下编译安装mysql-5.0.45.tar.gz
  8. Asp.net中用户自定义控件 ascx的使用
  9. [C入门 - 游戏编程系列] 环境篇
  10. DataTable中数据针对某列数据去重
  11. ThreadPool.QueueUserWorkItem的性能问题
  12. VirtualBox 磁盘容量调整
  13. 【转】Robust regression(稳健回归)
  14. ZAB协议
  15. 手机广告投放(phone advertising)唯一标识
  16. Zabbix11.3 Zabbix SNMP 常用OID列表
  17. Springboot整合二 集成 rabbitmq
  18. 【转载】MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
  19. Hibernate之mappedBy与@JoinColumn
  20. Unity扩展编辑器三

热门文章

  1. 测开之路二十三:python常用模块
  2. Jmeter中动态获取jsessionid来登录
  3. Linux环境下对大小写敏感,linux环境升级node
  4. T1215:迷宫
  5. Oracle基础数据类型与运算符
  6. 基于名称快速定位文件和文件夹的搜索工具Everything和dll依赖查询工具Dependency Walker
  7. 重定向和转向的写法,重定向以post方式提交
  8. 搭建 webpack、react 开发环境(二)
  9. poj3264 Balanced Lineup(树状数组)
  10. 解决“每次打开office2010的word都会出现配置进度框”问题