源码:java.util.concurrent.Callable<V> 源码解析
1. TODO
2. 脑图
Xmind
Edraw
Hexo 地址
👉 http://blog.wangjia.ink/2025/09/02/源码:java.util.concurrent.Callable<V>源码解析/
3. 基础部分
3.1. Callable 概述
Callable 是一个接口
实现 Callable 接口的具体实现类,表示一个可被线程执行的任务,我们称之为 “Callable 任务”
与 Runnable 任务相比,Callable 任务既可以有返回值,也可以抛出异常
[!NOTE] 注意事项
- 在
Java中,线程执行的任务,通常是指Runnable任务和Callable任务Runnable在Java1就出现了,但是Runnable任务既不能抛出受检异常,也没有返回值。执行Runnable就感觉进入了一个黑盒子,没有一点反馈,于是我们在Java5引入了Callable- 需要注意的是,这里有一个 “坑”:
Thread在设计之初就是只能用来执行Runnable任务,不能直接执行Callable任务(即本地线程 ➔ Thread#run ➔ target#run,这里的target就是一个Runnable任务)- 除此之外,即便能执行
Callable任务,如何拿到这个Callable任务的返回值,也是一个问题- 我们的解决思路通常是:
- 将实现
Callable接口的具体实现类,作为实现Runnable接口的具体实现类的属性,当线程调用实现Runnable接口的具体实现类时,会调用其run,我们在run中再去调用实现Callable接口的具体实现类的call,然后将call的返回值,也作为实现Runnable接口的具体实现类的属性FutureTask就是这样做的,详见源码:FutureTask(obsidian内部链接:源码:java.util.concurrent.FutureTask<V>源码解析,Hexo链接:)
4. 源码部分
1 | |
源码:java.util.concurrent.Callable<V> 源码解析
https://wangjia5289.github.io/2025/09/02/源码:java.util.concurrent.Callable<V>源码解析/