diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index b7a599fb2d..8fd4c4a6bb 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -629,12 +629,13 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat lock.lock(); try { // 必须存在线程等待,才创建连接 - if (lock.getWaitQueueLength(notEmpty) == 0) { + int waitThreadCount = lock.getWaitQueueLength(notEmpty); + if (waitThreadCount == 0) { lowWater.await(); continue; } - if (minIdle > 0 && poolingCount >= minIdle) { + if (minIdle > 0 && (poolingCount - waitThreadCount) >= minIdle) { lowWater.await(); continue; }