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/