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