在 Java 中,预定义的线程池主要是通过 java.util.concurrent.Executors 类提供的,常见的线程池有以下几种:
-
Fixed Thread Pool (
Executors.newFixedThreadPool(int nThreads))- 场景:适合于执行多个耗时的任务,且线程数固定的场景,比如处理固定数量的请求或并发处理一些任务。
-
Cached Thread Pool (
Executors.newCachedThreadPool())- 场景:适合于处理大量短时间的任务。当任务量大且时间短时,可以动态创建线程,但不再使用的线程会被回收。适合于瞬时高并发的场景。
-
Single Thread Executor (
Executors.newSingleThreadExecutor())- 场景:适合于需要保证任务顺序执行的场景,比如处理日志记录或顺序处理任务,避免并发导致的资源竞争。
-
Scheduled Thread Pool (
Executors.newScheduledThreadPool(int corePoolSize))- 场景:适合于需要定时或周期性执行任务的场景,比如定时任务调度、周期性数据处理等。