1. 虚拟线程下仍需用信号量/连接池限制并发的资源(DB 连接、下游配额)的原因
虚拟线程下,为什么仍需用信号量/连接池限制 DB 连接、下游配额等资源的并发?
- 虚拟线程的轻量与资源限制的差异
- 有界资源(连接、配额)的并发控制
- 信号量与连接池的作用
虚拟线程非常轻量,可创建数百万个,但虚拟线程执行时仍会占用真实的有界资源:数据库连接、下游服务的配额、文件句柄、内存等。创建大量虚拟线程同时等待同一个 DB 连接池,会导致连接池耗尽、线程阻塞排队,甚至引发下游超时雪崩。因此仍需用信号量、连接池(如 HikariCP)或配额限制来约束对这类有界资源的并发访问,即使线程本身轻量。虚拟线程解决的是"线程数"的瓶颈,而非"资源数"的瓶颈。
虚拟线程消除了"线程数"限制,但资源(连接、配额)仍是硬上限。若不加限制,共享的有界资源会被海量虚拟线程争抢,导致阻塞与失败。信号量/连接池是"资源级节流",与虚拟线程的"线程级轻量"互补。