Java 入门教程 JDK内置线程池的共同点和区别

ruben · 2021-12-02 19:58:13 · 热度: 10

构造器

newFixedThreadPool

  • 核心线程数 = 最大线程数,核心线程数可以指定
  • 无超时时间
  • 使用 LinkedBlockingQueue

newSingleThreadExecutor

  • 核心线程数 = 最大线程数 = 1
  • 无超时时间
  • 使用 LinkedBlockingQueue

newCachedThreadPool

  • 核心线程数为 0,最大线程数为 Integer 的最大值
  • 超时时间为 60s
  • 使用 SynchronousQueue

newScheduledThreadPool

  • 核心线程数可以指定,最大线程数为 Integer 最大值
  • 无超时时间
  • 使用 DelayedWorkQueue

任务队列

LinkedBlockingQueue

队列空间上限为 Integer 最大值,配合固定线程数的线程池使用

SynchronousQueue

队列空间为 0,每个 take 操作都需要一个 put 操作,配合线程数无上限(实际上限为 Integer 最大值)的线程池使用

DelayedWorkQueue

  • 队列空间会自动扩容
  • 新增任务时会根据 delay 时间排序
  • 取出任务时会先取到队列第一个任务,然后判断 delay 时间,再决定是否返回任务

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册