Java|ThreadPool
Executor 框架
任务本体 Runnable/Callable
具体的异步执行任务通过实现 Runnable/Callable 接口来作为一个可被执行的任务实例
任务执行 Executor 接口
JDK提供了一系列的任务执行工具
比较常用的是 ThreadPoolExecutor 和 ScheduledThreadPoolExecutor
异步计算结果 Future 接口
只需要知道异步计算的结果都在 Future 接口中
具体看下面的流程
整体流程
一个多线程任务从创建到结束的流程大致如下:
- 主线程首先要创建实现
Runnable
或者Callable
接口的任务对象 - 把创建完成的实现
Runnable
/Callable
接口的 对象直接交给ExecutorService
执行:ExecutorService.execute(Runnable command)
)或者也可以把Runnable
对象或Callable
对象提交给ExecutorService
执行(ExecutorService.submit(Runnable task)
或ExecutorService.submit(Callable <T> task)
) - 上面这两步其实可以通过一个 lambda reference 来实现
1 |
|
上面的情况是我们不关心结果,只管提交的情况
如果关心结果,可以调用 submit
接口,拿到 FutureTask 实例
需要注意的是如果直接 futureTask.get() 直接变同步阻塞了
Java|ThreadPool
http://example.com/2024/11/12/Java-ThreadPool/