MST

星途 面试题库

面试题:Java中通过Executors创建线程池的常见方式有哪些及其适用场景

请列举出Java中通过Executors工具类创建线程池的常见方法,如newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor等,并简要说明每个方法创建的线程池适用的场景。
40.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. newFixedThreadPool(int nThreads)
    • 创建方式:创建一个固定大小的线程池,线程池中的线程数量始终保持为nThreads
    • 适用场景:适用于已知并发任务数量且任务执行时间较长的场景,比如处理数据库连接池中的任务。它能控制并发线程数,避免过多线程导致系统资源耗尽,同时保证任务按顺序执行。
  2. newCachedThreadPool()
    • 创建方式:创建一个可缓存的线程池,如果线程池长度超过处理需求,可灵活回收空闲线程,若无可回收,则新建线程。
    • 适用场景:适用于执行大量短期异步任务的场景,例如Web服务器处理短期的HTTP请求。因为它可以快速响应任务,不需要时又能自动释放资源。
  3. newSingleThreadExecutor()
    • 创建方式:创建一个单线程的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
    • 适用场景:适用于需要顺序执行任务,并且在任意时间点只允许有一个任务被执行的场景,如对文件进行顺序读写操作。
  4. newScheduledThreadPool(int corePoolSize)
    • 创建方式:创建一个大小无限的线程池,支持定时及周期性的任务执行。
    • 适用场景:适用于需要执行定时任务,或者周期性任务的场景,比如定时备份数据库、定时清理缓存等。