package currentTest.BlockingQueue;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask; /**
* 测试FutureTask的用法,如果不想分支线程阻塞主线程,又想取得分支线程的执行结果,就用FutureTask
*
* @author zhailzh
*
*/
public class FutureTaskTest { /**
* @param args
*/
public static void main(String[] args) {
CountNum cn = new CountNum(0);
// FutureTask<Integer> 这里的表示返回的是Integer
FutureTask<Integer> ft = new FutureTask<Integer>(cn);
Thread td = new Thread(ft);
System.out.println("futureTask执行计算:" + System.currentTimeMillis());
td.start();
System.out.println("main 主线程可以做些其他事情" + System.currentTimeMillis());
try {
// futureTask的get方法会阻塞,知道可以取得结果为止
Integer result = ft.get();
System.out.println("计算的结果是:" + result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("取得分支线程执行的结果后,主线程可以继续处理其他事项");
} } class CountNum implements Callable {
private Integer sum; public CountNum(Integer sum) {
this.sum = sum;
} public Object call() throws Exception {
for (int i = 0; i < 100; i++) {
sum = sum + i;
}
// 休眠5秒钟,观察主线程行为,预期的结果是主线程会继续执行,到要取得FutureTask的结果是等待直至完成
Thread.sleep(3000);
System.out.println("futureTask 执行完成" + System.currentTimeMillis());
return sum;
} }

每日一戒:

最新文章

  1. Zend Framework 项目 index.php 的问题
  2. 关于js的回调函数的一点看法
  3. 构建自己的PHP框架--构建缓存组件(2)
  4. 【DP】HDU 1087
  5. JAVA初学(1):值类型和引用类型的区别
  6. nodejs 访问mysql
  7. Linq专题之匿名对象
  8. [cocoapods]安装cocoapods
  9. javascript 不用ajax 用 iframe 子域名下做到ajax post数据
  10. Flink从入门到放弃(入门篇4) DataStreamAPI
  11. Top 查看某些或者某个进程(top -p pid)
  12. Webform(条件查询)
  13. postman发送json格式的post请求
  14. 解决invalid record found in VCF4 file (at least 8 tab-delimited fields expected)问题,批量修改空格改为制表格格式
  15. [PHP]PHP页面静态化:真静态的两种方案
  16. CentOS ./configure &amp;&amp; make &amp;&amp; make install详解
  17. exLucas学习笔记
  18. 2 pygraphviz在windows10 64位下的安装问题(反斜杠的血案)
  19. 041队列queue(重要,多线程使用)
  20. Mysql only_full_group_by 引起的错误

热门文章

  1. log.sh
  2. 【转】在ASP.NET MVC中,使用Bundle来打包压缩js和css
  3. final(最终、修饰符)
  4. Linux常见面试题
  5. 最好的Laravel中文文档
  6. Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器
  7. 作业三 ATM
  8. JavaScript原型,原型链 !
  9. C# 计算日期时间的间隔天数
  10. iOS中你必须了解的多线程