Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java自定义线程池

作者:倾尽尘光暖流年   发布日期:2026-05-30   浏览:40

import java.util.concurrent.*;

public class CustomThreadPoolExample {

    public static void main(String[] args) {
        // 创建一个自定义的线程池
        ThreadPoolExecutor executor = new ThreadPoolExecutor(
            2, // 核心线程数
            4, // 最大线程数
            60L, // 线程空闲时间
            TimeUnit.SECONDS, // 时间单位
            new LinkedBlockingQueue<>(100), // 任务队列
            new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略
        );

        // 提交任务到线程池
        for (int i = 0; i < 10; i++) {
            int taskNumber = i;
            executor.submit(() -> {
                System.out.println("Executing Task " + taskNumber + " by " + Thread.currentThread().getName());
                try {
                    Thread.sleep(2000); // 模拟任务执行时间
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }

        // 关闭线程池
        executor.shutdown();
        try {
            if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
                executor.shutdownNow();
            }
        } catch (InterruptedException e) {
            executor.shutdownNow();
        }
    }
}

解释说明

  1. 创建自定义线程池:

    • 使用 ThreadPoolExecutor 构造函数创建一个自定义线程池。
    • 参数解释:
      • 核心线程数:线程池中保持的最小线程数,即使它们处于空闲状态。
      • 最大线程数:线程池中允许的最大线程数。
      • 线程空闲时间:当线程数量超过核心线程数时,多余的空闲线程等待新任务的最长时间。
      • 时间单位:线程空闲时间的时间单位。
      • 任务队列:用于保存等待执行的任务的队列。
      • 拒绝策略:当线程池无法处理新任务时(如超出最大线程数且队列已满),采取的拒绝策略。
  2. 提交任务:

    • 使用 submit() 方法将任务提交给线程池执行。
    • 每个任务是一个实现了 Runnable 接口的匿名类或 lambda 表达式。
  3. 关闭线程池:

    • 使用 shutdown() 方法平滑地关闭线程池,不再接受新任务,但会继续执行已提交的任务。
    • 使用 awaitTermination() 等待所有任务完成,超时后调用 shutdownNow() 强制关闭线程池。

上一篇:java时间加减分钟

下一篇:java &运算

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

jsonobject.tojavaobje

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站