# 密服API接口多线程测试demo **Repository Path**: arvinyuan0223/mf_multithread_test ## Basic Information - **Project Name**: 密服API接口多线程测试demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-18 - **Last Updated**: 2026-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mf-multithread-test Spring Boot 多线程加密解密测试项目 ## 功能特性 - 多线程批量加密任务(单条加密接口) - 多线程批量解密任务(单条解密接口) - 批量加密接口(一次请求处理多条数据) - 批量解密接口(一次请求处理多条数据) - 线程池配置支持 - 任务失败重试机制 - 立即响应模式(非阻塞) - 任务完成日志统计(成功/失败数、耗时、TPS) ## 快速开始 ### 编译打包 ```bash mvn clean package -DskipTests ``` ### 启动应用 **Windows:** ```bash startup.bat ``` **Linux/Unix:** ```bash chmod +x startup.sh ./startup.sh ``` **直接运行:** ```bash java -jar target/mf-multithread-test-1.0.0.jar ``` ### 访问接口 **单条加解密接口(多线程调用):** - 批量加密:`http://localhost:8080/encrypt/batch?totalCount=1000` - 批量解密:`http://localhost:8080/decrypt/batch?totalCount=1000` **批量加解密接口(一次请求处理多条数据):** - 批量加密:`http://localhost:8080/batch/encrypt?totalCount=1000` - 批量解密:`http://localhost:8080/batch/decrypt?totalCount=1000` 参数说明: - `totalCount`: 任务数量或数据条数,默认 1000 ## 配置说明 ### 配置文件位置 - 开发环境:`src/main/resources/application.properties` - 生产环境:`conf/application.properties` ### 线程池配置 线程池配置在 [ThreadPoolConfig.java](file:///d:\MyCode\mf_multithread_test\src\main\java\com\example\mfmultithreadtest\config\ThreadPoolConfig.java) 中实现,采用 Spring 的 ThreadPoolTaskExecutor。 ```properties # 本地开发环境线程池配置 thread.pool.coreSize=4 # 核心线程数:线程池保持的最小线程数 thread.pool.maxSize=8 # 最大线程数:线程池能容纳的最大线程数 thread.pool.queueCapacity=100000 # 队列容量:等待执行的任务队列大小 thread.pool.threadNamePrefix=custom-thread- # 16核32G生产环境线程池配置(已注释) # thread.pool.coreSize=16 # thread.pool.maxSize=32 # thread.pool.queueCapacity=200 # thread.pool.threadNamePrefix=custom-thread- ``` **线程池参数说明:** - `coreSize`: 核心线程数,即使空闲也会保持存活 - `maxSize`: 最大线程数,当队列满时会创建新线程直到达到此值 - `queueCapacity`: 任务队列容量,超过此容量且达到最大线程数时会触发拒绝策略 - `threadNamePrefix`: 线程名称前缀,便于日志追踪 - 拒绝策略:采用 CallerRunsPolicy,由调用线程执行被拒绝的任务 ### OkHttp3 连接池配置 OkHttp3 连接池配置在 [CryptoService.java](file:///d:\MyCode\mf_multithread_test\src\main\java\com\example\mfmultithreadtest\service\CryptoService.java) 中实现。 **配置参数(代码中硬编码):** - 最大空闲连接数:100 - 连接保活时间:5 分钟 - 连接超时:10 秒 - 读取超时:30 秒 - 写入超时:30 秒 - 失败重试:最多 3 次 ### 加密解密 URL 配置 ```properties # 单条加解密接口 crypto.encrypt.url=https://cscpapitest.pipechina.com.cn:30668/cmk/v1/encrypt crypto.decrypt.url=https://cscpapitest.pipechina.com.cn:30668/cmk/v1/decrypt # 批量加解密接口 crypto.batchEncrypt.url=http://10.39.5.51:30006//chiron/system/batchEncryptCmk crypto.batchDecrypt.url=http://10.39.5.51:30006//chiron/system/batchDecryptCmk ``` ## 项目结构 ``` mf-multithread-test/ ├── src/ │ └── main/ │ ├── java/com/example/mfmultithreadtest/ │ │ ├── controller/TestController.java # REST 接口 │ │ ├── service/CryptoService.java # 加密解密服务 │ │ ├── config/ThreadPoolConfig.java # 线程池配置 │ │ └── MfMultithreadTestApplication.java # 启动类 │ └── resources/ │ └── application.properties # 配置文件 ├── target/ │ ├── mf-multithread-test-1.0.0.jar # 可执行 JAR │ └── conf/ │ └── application.properties # 外部配置 ├── startup.bat # Windows 启动脚本 ├── startup.sh # Linux/Unix 启动脚本 └── pom.xml # Maven 配置 ``` ## 技术栈 - Spring Boot 2.7.18 - Java 8 - Maven - OkHttp 4.12.0 - CompletableFuture 异步编程 ## 日志说明 任务完成后会在日志中打印: - 成功任务数 - 失败任务数 - 总耗时 - TPS(每秒处理事务数)