Java 线程池是一种管理线程的工具,它允许开发者以线程池的方式管理多个线程,从而减少线程的创建和销毁开销,提高应用程序的性能。本文将详细介绍 Java 线程池的原理、常用线程池以及如何使用线程池。

线程池原理

线程池内部维护一个线程队列和一个工作队列。当有任务提交给线程池时,线程池会根据线程队列和执行策略来决定是否创建新的线程来执行任务。

  • 线程队列:用于存放等待执行的线程任务。
  • 执行策略:决定如何处理提交的任务,包括创建新线程、丢弃任务、抛出异常等。

常用线程池

Java 提供了以下几种常用的线程池:

  • FixedThreadPool:创建固定数量的线程来执行任务。
  • CachedThreadPool:根据需要创建新线程,但会在线程空闲 60 秒后回收。
  • SingleThreadPool:只创建一个线程来执行任务。
  • ScheduledThreadPool:可以执行定时任务和周期任务。

使用线程池

以下是一个简单的示例,展示如何使用线程池来执行任务:

ExecutorService executor = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; i++) {
    executor.execute(() -> {
        System.out.println(Thread.currentThread().getName());
    });
}
executor.shutdown();

在上面的示例中,我们创建了一个固定线程池,包含 3 个线程,并提交了 10 个任务。

扩展阅读

想要了解更多关于线程池的知识,可以阅读以下文章:

线程池示意图