实现Callable接口创建线程
2024-10-01 02:30:21
创建执行线程有四种方式:
- 实现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;
}
}
最新文章
- 全国高校网安联赛Web专场~WriteUp
- QuartZ的线程锁
- [原]Unity3D深入浅出 - Shader基础开发
- Fire Net
- html5标签兼容ie6,7,8
- MVC 使用AJAX POST上传图片的方式
- Java数据结构习题_算法分析
- [Q]安装问题(找不到InstallUtilLib.dll)
- ETL kettle 数据调取防止意外停止处理
- 使用redis做mybaties的二级缓存(2)-Mybatis 二级缓存小心使用
- Java对【JSON数据的解析】--Gson解析法
- 浅谈axios
- 20155312 张竞予 Exp4 恶意代码分析
- 关于iOS与html交互,隐藏或修改html标签内容
- [转载]FlipClock.js时钟,计数,3D翻转插件
- [c/c++] programming之路(4)、常量和变量
- Jmeter(八)HTTPCookie管理器
- MongoDB安装成为Windows服务及日常使用遇到问题总结
- Oracle ref cursor和sys_refcursor
- go jwt OAuth2.0
热门文章
- nginx日志输出,https,ssl
- IDEA 安装插件报错 Plugin Lombok Plugin was not installed: Cannot download
- servlet类与Spring Controller类的关系
- tomcat结合memcached构建session服务器
- 20145310 《Java程序设计》第8周学习总结
- 快用Visual Studio(二)- 界面,功能区与命令面板
- Activiti工作流与spring集成
- Shell学习小结 - 深入认识变量
- LeetCode——Longest Repeating Character Replacement
- 整数分解为若干项之和 - PAT