在Java中,可以使用java.util.concurrent.Executors工具类来创建线程池。以下是一些常见的线程池创建方式:

  1. 固定大小的线程池(Fixed Thread Pool)
    创建一个定长的线程池,可控制线程最大并发数,超出的任务将在队列中等待。
ExecutorService executor = Executors.newFixedThreadPool(int nThreads);

其中,nThreads是你想要设置的核心线程数量。

  1. 单个后台线程池(Single Thread Executor)
    只有一个工作线程的线程池,所有任务按照提交顺序执行。
ExecutorService executor = Executors.newSingleThreadExecutor();
  1. 可缓存的线程池(Cached Thread Pool)
    线程池的数量会根据需要动态调整,如果线程空闲超过60秒,则会被终止回收,新任务进来时再新建线程,适合处理大量短生命周期的任务。
ExecutorService executor = Executors.newCachedThreadPool();
  1. 定长定时线程池(Scheduled Thread Pool)
    可以定期或周期性地执行任务的线程池。
ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(int corePoolSize);

这种线程池主要用于执行定时任务和具有固定延迟的任务。

  1. 自定义线程池
    如果上述提供的线程池无法满足需求,可以通过 ThreadPoolExecutor 类直接构造,以便更精确地控制线程池的行为,包括核心线程数、最大线程数、存活时间、阻塞队列等。
ThreadPoolExecutor executor = new ThreadPoolExecutor(
    int corePoolSize,
    int maximumPoolSize,
    long keepAliveTime,
    TimeUnit unit,
    BlockingQueue<Runnable> workQueue,
    ThreadFactory threadFactory,
    RejectedExecutionHandler handler
);

请注意,在程序结束或者不再使用线程池时,应调用 executor.shutdown()executor.shutdownNow() 来关闭线程池并释放资源。