# learn_books **Repository Path**: edidada/learn_books ## Basic Information - **Project Name**: learn_books - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-26 - **Last Updated**: 2026-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # README https://blog.csdn.net/superfjj/article/details/120228102 --- ## 项目说明 本项目基于CSDN博客《Java并发编程之美》的章节目录结构,整理了Java并发编程相关的学习代码示例。 ### 参考资源 - **《Java并发编程之美》** - 翟陆续著 - 博客地址:https://blog.csdn.net/superfjj/article/details/120228102 - 该博客详细介绍了Java并发编程的核心概念,包括: - 并发编程基础(线程基础、并发特性、锁机制) - 原子操作类(Atomic、LongAdder) - 并发容器(ConcurrentHashMap、CopyOnWriteArrayList、BlockingQueue) - 线程池与Executor框架 - Fork/Join框架 - 并发设计模式(生产者-消费者、Future、Master-Worker) - CompletableFuture异步编程 ### 项目结构 ``` learn_books/ ├── java-concurrency-beauty/ # 《Java并发编程之美》代码示例 │ ├── part1-basics/ # 基础篇 │ ├── part2-advanced/ # 进阶篇 │ ├── part3-practice/ # 实战篇 │ └── part4-async/ # 异步编程篇 ├── Java-Concurrency-in-Practice/ # 《Java并发编程实战》子模块 ├── learn-java-concurrency/ # Java并发学习子模块 ├── thinking-in-java/ # 《Java编程思想》子模块 └── wx-project/ # 微信项目子模块 ``` ### 子模块使用 本项目包含Git子模块,克隆后需要初始化: ```bash git clone <你的仓库地址> cd learn_books git submodule update --init --recursive ``` ### 技术栈 - Java 8+ - Maven - Lombok - SLF4J + Logback - JUnit --- ## 性能优化指南 针对耗时任务(HTTP接口、大数据清洗、单词统计等)的优化方案: ### 瓶颈分析 - **CPU瓶颈**:复杂计算、正则表达式、循环嵌套 - **IO瓶颈**:磁盘读写、网络延迟、数据库慢查询 - **内存瓶颈**:频繁GC、内存泄漏、大对象创建 - **锁竞争**:线程阻塞、同步锁竞争 ### 优化方案(除多线程外) 1. **算法优化** - 降低时间复杂度 - 空间换时间(缓存、索引) - 减少重复计算 2. **数据结构与缓存** - 选择合适的数据结构(HashMap vs List) - 本地缓存(Caffeine) - Redis缓存热点数据 3. **数据库优化** - 索引优化 - SQL优化(避免SELECT *) - 分页查询、批量操作 - 读写分离、分库分表 4. **异步处理** - 非核心逻辑异步化(@Async) - 消息队列削峰(RabbitMQ/Kafka) 5. **批处理与流式** - 批量操作减少IO - Stream流式处理大数据 6. **JVM调优** - GC算法选择(G1) - 内存参数调整 7. **硬件与架构** - SSD替代HDD - CDN加速 - 分布式计算(Spark/Flink) ### 优化流程 ``` 监控 → 分析 → 假设 → 验证 → 上线 → 监控 ``` 详细内容见 [performance-optimization-guide.md](./performance-optimization-guide.md) --- ## 并行接口调用优化 多线程优化耗时接口调用场景: ### 场景描述 一个接口需要调用10个下游接口: - **接口1、2、3**:必须严格按照顺序执行(链式依赖) - **接口4、5**:必须严格按照顺序执行(链式依赖) - **接口6-10**:无依赖关系,可以并行执行 ### 解决方案 **使用CompletableFuture实现:** ```java // 链式依赖:1->2->3 CompletableFuture chain1 = CompletableFuture .supplyAsync(() -> callApi1(input)) .thenCompose(r1 -> CompletableFuture.supplyAsync(() -> callApi2(r1))) .thenCompose(r2 -> CompletableFuture.supplyAsync(() -> callApi3(r2))); // 并行执行:6、7、8、9、10 CompletableFuture future6 = CompletableFuture .supplyAsync(() -> callApi6(input)); // ... 其他并行接口 // 等待所有完成 CompletableFuture.allOf(chain1, chain2, future6, ...).join(); ``` ### 核心API | 方法 | 用途 | |-----|------| | `supplyAsync` | 启动异步任务 | | `thenCompose` | 链式依赖(A->B->C) | | `thenCombine` | 合并两个异步结果 | | `allOf` | 等待所有任务完成 | | `orTimeout` | 设置超时时间 | | `exceptionally` | 异常降级处理 | ### 性能提升 - **串行执行**:约2240ms - **并行执行**:约450ms - **性能提升**:约5倍 详细内容见 [parallel-api-call-guide.md](./parallel-api-call-guide.md) --- ## Java并发版本指南 按Java版本(8/11/14/17)整理的多线程类和方法列表: ### Java 8 核心特性 - **CompletableFuture** - 异步编程基础 - **StampedLock** - 乐观读锁 - **LongAdder/LongAccumulator** - 高并发计数 - **Parallel Stream** - 并行流处理 - **Fork/Join框架** - 分治任务执行 ### Java 11 增强 - **CompletableFuture超时控制** - `orTimeout()`, `completeOnTimeout()` - **新HTTP Client** - 原生异步HTTP支持 - **ZGC** - 低延迟垃圾收集器 ### Java 17 LTS特性 - **Sealed Classes** - 密封类(状态机设计) - **Records** - 不可变数据载体(线程安全) - **新随机数生成器** - `RandomGenerator`接口 - **模式匹配** - `switch`表达式增强 ### 废弃方法 - `Thread.stop()` - 已移除 - `Thread.suspend()`/`resume()` - 已移除 - `Object.finalize()` - 已弃用 详细内容见 [java-concurrency-versions-guide.md](./java-concurrency-versions-guide.md) --- ## 多语言并行示例 支持6种编程语言的并行接口调用实现: | 语言 | 核心机制 | 文件 | |-----|---------|------| | Go | Goroutine + Channel | `go/parallel_api_call.go` | | C# | Task + async/await | `csharp/ParallelApiCall.cs` | | C | pthread + mutex | `c/parallel_api_call.c` | | C++ | std::async + std::future | `cpp/parallel_api_call.cpp` | | Python | asyncio | `python/parallel_api_call.py` | | TypeScript | Promise | `typescript/parallel_api_call.ts` | 详细内容见 [parallel-api-examples/README.md](./parallel-api-examples/README.md) --- *最后更新:基于CSDN博客整理的Java并发编程学习项目*