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
threadPoolExecutor.execute(() -> doBusinessAsync());

上面的情况是我们不关心结果,只管提交的情况

如果关心结果,可以调用 submit 接口,拿到 FutureTask 实例

需要注意的是如果直接 futureTask.get() 直接变同步阻塞了


Java|ThreadPool
http://example.com/2024/11/12/Java-ThreadPool/
作者
Noctis64
发布于
2024年11月12日
许可协议