MST

星途 面试题库

面试题:Java中Executors的常见调度策略及应用场景

请简述Java中Executors提供的几种常见调度策略,如FixedThreadPool、CachedThreadPool、SingleThreadExecutor等,并说明它们各自适合的应用场景。
35.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

FixedThreadPool

  • 调度策略:创建一个固定大小的线程池,线程池中的线程数量固定不变。当有新任务提交时,如果线程池中有空闲线程,则立即执行;如果没有空闲线程,则任务会被放入任务队列中等待,直到有线程空闲。
  • 应用场景:适用于需要控制并发数的场景,比如数据库连接池。由于线程数固定,可以避免因线程过多导致的资源耗尽问题,同时能保证任务按顺序执行。

CachedThreadPool

  • 调度策略:创建一个可缓存的线程池,线程池的大小不固定。如果线程池中有空闲线程,则重用空闲线程执行新任务;如果没有空闲线程,则创建新线程执行任务。当线程执行完任务后,不会立即销毁,而是在一段时间(60秒)内保持空闲状态,等待新任务。如果这段时间内没有新任务,则该线程被销毁。
  • 应用场景:适用于执行大量短期异步任务的场景,比如处理网页请求。由于线程可以缓存复用,能提高任务执行效率,且不需要手动控制线程数量。

SingleThreadExecutor

  • 调度策略:创建一个单线程的线程池,只有一个线程在执行任务。所有任务按照提交的顺序依次执行,前一个任务执行完毕后,才会执行下一个任务。
  • 应用场景:适用于需要顺序执行任务,并且不希望有多个线程并发执行的场景,比如文件的顺序读写操作。它能保证任务的顺序性,避免多线程带来的资源竞争问题。