创建执行线程有四种方式:

  • 实现implements接口创建线程
  • 继承Thread类创建线程
  • 实现Callable接口,通过FutureTask包装器来创建线程
  • 使用线程池创建线程

下面介绍通过实现Callable接口来创建线程。

 package com.ccfdod.juc;

 import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask; /**
* 一、创建执行线程的方式三:实现Callable接口。相较于实现Runnable接口的方式,方法可以有返回值,并且可以抛出异常
* 二、执行Callable方式,需要FutureTask实现类的支持,用于接收运算结果
*/
public class TestCallable {
public static void main(String[] args) {
ThreadDemo td = new ThreadDemo(); // 1.执行Callable方式,需要FutureTask实现类的支持,用于接收运算结果
FutureTask<Integer> result = new FutureTask<>(td);
new Thread(result).start(); // 2.接收线程运算后的结果
Integer sum;
try {
//等所有线程执行完,获取值,因此FutureTask 可用于 闭锁
sum = result.get();
System.out.println("-----------------------------");
System.out.println(sum);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
} class ThreadDemo implements Callable<Integer> { @Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i <= 100000; i++) {
System.out.println(i);
sum += i;
}
return sum;
}
}

最新文章

  1. 全国高校网安联赛Web专场~WriteUp
  2. QuartZ的线程锁
  3. [原]Unity3D深入浅出 - Shader基础开发
  4. Fire Net
  5. html5标签兼容ie6,7,8
  6. MVC 使用AJAX POST上传图片的方式
  7. Java数据结构习题_算法分析
  8. [Q]安装问题(找不到InstallUtilLib.dll)
  9. ETL kettle 数据调取防止意外停止处理
  10. 使用redis做mybaties的二级缓存(2)-Mybatis 二级缓存小心使用
  11. Java对【JSON数据的解析】--Gson解析法
  12. 浅谈axios
  13. 20155312 张竞予 Exp4 恶意代码分析
  14. 关于iOS与html交互,隐藏或修改html标签内容
  15. [转载]FlipClock.js时钟,计数,3D翻转插件
  16. [c/c++] programming之路(4)、常量和变量
  17. Jmeter(八)HTTPCookie管理器
  18. MongoDB安装成为Windows服务及日常使用遇到问题总结
  19. Oracle ref cursor和sys_refcursor
  20. go jwt OAuth2.0

热门文章

  1. nginx日志输出,https,ssl
  2. IDEA 安装插件报错 Plugin Lombok Plugin was not installed: Cannot download
  3. servlet类与Spring Controller类的关系
  4. tomcat结合memcached构建session服务器
  5. 20145310 《Java程序设计》第8周学习总结
  6. 快用Visual Studio(二)- 界面,功能区与命令面板
  7. Activiti工作流与spring集成
  8. Shell学习小结 - 深入认识变量
  9. LeetCode——Longest Repeating Character Replacement
  10. 整数分解为若干项之和 - PAT