当前位置:首页 > Java

java线程池如何调用

2026-03-18 16:39:18Java

线程池的基本概念

Java线程池通过java.util.concurrent包中的ExecutorServiceThreadPoolExecutor实现,用于管理线程的生命周期和任务调度,避免频繁创建销毁线程的开销。

创建线程池

通过Executors工厂类提供的方法创建不同类型的线程池:

  1. 固定大小线程池
    ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5); // 指定线程数
  2. 单线程池
    ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
  3. 可扩容线程池
    ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); // 空闲线程自动回收
  4. 定时任务线程池
    ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);

自定义线程池

通过ThreadPoolExecutor构造函数自定义参数(核心线程数、最大线程数、空闲时间、任务队列等):

java线程池如何调用

ThreadPoolExecutor customPool = new ThreadPoolExecutor(
    2,                      // 核心线程数
    10,                     // 最大线程数
    60, TimeUnit.SECONDS,   // 空闲线程存活时间
    new LinkedBlockingQueue<>(100) // 任务队列
);

提交任务到线程池

  • 执行无返回值任务
    executorService.execute(() -> System.out.println("Task running"));
  • 执行有返回值任务
    Future<String> future = executorService.submit(() -> "Result");
    String result = future.get(); // 阻塞获取结果
  • 定时任务
    scheduledThreadPool.schedule(
        () -> System.out.println("Delayed task"),
        5, TimeUnit.SECONDS      // 延迟5秒执行
    );

关闭线程池

  1. 优雅关闭
    executorService.shutdown(); // 停止接收新任务,等待已提交任务完成
  2. 强制关闭
    executorService.shutdownNow(); // 尝试中断所有任务

注意事项

  • 避免使用Executors.newFixedThreadPoolnewCachedThreadPool时未限制队列大小,可能导致内存溢出。
  • 任务中需处理InterruptedException以响应中断。
  • 使用Future.get()时设置超时时间,防止长时间阻塞。

通过合理配置线程池参数(如队列类型、拒绝策略),可优化系统资源使用和任务处理效率。

标签: 线程java
分享给朋友:

相关文章

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

如何运行java

如何运行java

运行Java程序的方法 安装Java开发工具包(JDK) 确保系统已安装JDK。可通过命令行输入 java -version 检查是否安装。若未安装,需从Oracle官网或OpenJDK下载并配置环境…

如何卸载java

如何卸载java

卸载Java的步骤 Windows系统卸载方法 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到Java相关条目(如“Java 8 Update 251”),右键选择卸载并跟随向导完成操…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java如何删除文件

java如何删除文件

删除文件的基本方法 使用 java.io.File 类的 delete() 方法可以删除文件。如果文件存在且删除成功,返回 true;否则返回 false。 import java.io…

如何编译java

如何编译java

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证是否安装成功。若未安装,需从Oracl…