Java多线程Callable接口实现代码示例
作者:于亮 时间:2021-08-06 14:29:01
对于多线程,大家并不陌生,对于如何创建线程也是轻车熟路,对于使用new thread和实现runable接口的方式,不再多说。这篇博文我们介绍第三种:实现Callable接口。
Callable接口
接口定义:
@FunctionalInterface
public interface Callable<V> {
V call() throws Exception;
}
从Callable的定义可以看出:
Callable接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的,方法可以有返回值,并且可以抛出异常。但是Runnable不行。
Callable需要依赖FutureTask,用于接收运算结果。一个产生结果,一个拿到结果。FutureTask是Future接口的实现类,也可以用作闭锁。
简单实例
计算0到100相加,返回结果。
public class TestCallable {
public static void main(String[] args) {
CallableThreadDemo ctd = new CallableThreadDemo();
//1.执行Callable方式,需要FutureTask实现类的支持,用于接收运算结果
FutureTask<Integer> result = new FutureTask<Integer>(ctd);
new Thread(result).start();
//2.接收线程运算后的结果
try {
Integer sum = result.get(); //FutureTask 可用于闭锁
System.out.println(sum);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
class CallableThreadDemo implements Callable<Integer>{
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
}
return sum;
}
}
总结
Callable接口其实特别简单,在多线程环境中,返回结果。
希望本文所述对大家了解多线程及callable接口有所帮助。感兴趣的朋友可以继续参阅本站:浅谈Java面向接口编程、Java编程接口回调一般用法代码解析等。感谢大家对本站的支持!
来源:http://blog.csdn.net/jiuqiyuliang/article/details/62426518
标签:java,多线程,接口
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java实现简单猜拳小游戏
2021-09-01 07:49:46
![](https://img.aspxhome.com/file/2023/3/79223_0s.jpg)
Spring实现处理跨域请求代码详解
2023-11-25 12:28:34
教你怎么用Java开发扫雷游戏
2023-07-22 09:49:26
![](https://img.aspxhome.com/file/2023/0/63480_0s.png)
利用Lambda表达式创建新线程案例
2023-08-26 23:16:00
java 对象输入输出流读写文件的操作实例
2021-06-13 15:24:30
Java实现矩阵加减乘除及转制等运算功能示例
2023-07-05 04:49:53
![](https://img.aspxhome.com/file/2023/0/64050_0s.png)
一文详解Java中的Stream的汇总和分组操作
2021-12-24 17:32:54
![](https://img.aspxhome.com/file/2023/3/61313_0s.png)
Fluent Mybatis零xml配置实现复杂嵌套查询
2022-02-03 19:34:32
![](https://img.aspxhome.com/file/2023/9/71859_0s.png)
MyBatis超详细讲解如何实现分页功能
2023-08-22 23:06:51
![](https://img.aspxhome.com/file/2023/6/58216_0s.png)
解决Java中OutOfMemoryError的问题
2023-01-26 13:51:03
![](https://img.aspxhome.com/file/2023/8/76498_0s.png)
spring Bean创建的完整过程记录
2022-04-14 03:57:51
![](https://img.aspxhome.com/file/2023/0/71180_0s.jpg)
C#生成随机验证码代码分享
2023-07-17 21:22:26
SpringBoot中@Import注解如何正确使用
2023-07-28 12:36:16
![](https://img.aspxhome.com/file/2023/7/57707_0s.png)
Java Socket实现单线程通信的方法示例
2022-04-22 15:43:02
java实现读取、删除文件夹下的文件
2021-12-06 20:07:48
Java掩码的几种使用例举
2022-02-11 11:08:04
Spring @Conditional注解原理解析
2022-10-04 16:09:51
详解JAVA Spring 中的事件机制
2022-01-13 05:26:33
mybatis-plus的批量新增/批量更新以及问题
2022-10-28 04:44:16
![](https://img.aspxhome.com/file/2023/2/67972_0s.png)
详解Android自定义控件属性TypedArray以及attrs
2023-06-20 05:13:41
![](https://img.aspxhome.com/file/2023/9/62179_0s.jpg)