本文主要是介绍Runnable, Callable, Future, Task, FutureTask总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对象 | 用法 |
---|
Runnable | 没返回值 |
Callable | 有返回值 |
Task | - extends Runnable
- 只有俩方法,run和cancel,都没返回值。
|
Future | - Executor是Runnable和Callable的调度容器(需和Runnable和Callable配套使用)
- Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果、设置结果操作。(虽然runnable还是没有返回值。)
- get方法会阻塞,直到任务返回结果
|
FutureTask | - 是一个RunnableFuture,RunnableFuture实现了Runnbale又实现了Future这两个接口。
- 它可以包装Runnable和Callable, 由构造函数注入依赖。
- Runnable注入会被Executors.callable()函数转换为Callable 类型,即FutureTask最终都是执行Callable类型的任务。
- get()函数获取执行结果,该函数会阻塞,直到结果返回
- 也就是说,提交给线程池的任务和执行后的结果,都放到同一个FutureTask对象中。提交时用到Task属性,返回结果用到Future属性。
|
这篇关于Runnable, Callable, Future, Task, FutureTask总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!