线程池的七个参数为何让无数开发者踩坑从execute流程到ctl的设计哲学

线程创建从来不是免费的。在Java中,每个线程都会分配一个独立的调用栈(默认1MB),线程的创建和销毁需要操作系统参与,涉及系统调用和内存分配。当线程数量达到数千时,这种开销会显著影响系统性能。正是这一根本问题催生了线程池的设计——通过线程复用减少创建销毁的开销。2004年,随着JSR 166的正式发布,Java 5引入了java.util.concurrent包,ThreadPoolExecutor成为这个包中最核心的组件之一。 ...

12 min · 5848 words

一个int变量如何支撑起Java并发包的半壁江山:AQS的设计哲学与实现原理

2004年,Doug Lea在POC CSJP Workshop上发表了一篇题为《The java.util.concurrent Synchronizer Framework》的论文。这篇论文的核心贡献是提出了一个统一的同步器框架——AbstractQueuedSynchronizer(AQS),它用一个int类型的state变量和一个FIFO队列,解决了Java并发编程中几乎所有同步原语的实现问题。 ...

9 min · 4246 words