From 9c555b01efa5efe86aeb1d8480526c43cc3e7332 Mon Sep 17 00:00:00 2001 From: wenshao Date: Tue, 12 Jul 2011 10:07:52 +0000 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81numTestsPerEvictionRun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@382 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../alibaba/druid/pool/DruidDataSource.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index 6d41f2d422..9662ca58e1 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -629,7 +629,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat public void run() { initedLatch.countDown(); - final List evictList = new ArrayList(); + final List evictList = new ArrayList(); FOR_0: for (;;) { // 从前面开始删除 try { @@ -646,8 +646,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat continue; } - int removeCount = 0; - ConnectionHolder first = null; + int evictCount = 0; lock.lock(); try { int numTestsPerEvictionRun = DruidDataSource.this.numTestsPerEvictionRun; @@ -656,7 +655,7 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat } for (int i = 0; i < numTestsPerEvictionRun; ++i) { - first = connections[0]; + ConnectionHolder first = connections[0]; if (first == null) { continue FOR_0; @@ -673,17 +672,21 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat // removete first System.arraycopy(connections, 1, connections, 0, count - 1); connections[--count] = null; + evictList.add(first); + evictCount++; } } } finally { lock.unlock(); } - Connection connection = first.getConnection(); - try { - connection.close(); - } catch (SQLException e) { - LOG.error("create connection error", e); + for (ConnectionHolder item : evictList) { + Connection connection = item.getConnection(); + try { + connection.close(); + } catch (SQLException e) { + LOG.error("create connection error", e); + } } destroyCount++;