java testwhileidle_testWhileIdle不起作用?

我在DestroyThread里面加上了心跳连接的代码,还在测试阶段:

//After the remove,we do heartbeat

if (connections.length > 1) {

for (int i = 0; i < heartBeatCount; i++) {

try {

lock.lockInterruptibly();

} catch (InterruptedException e) {

return;

}

//we get the first connection to do heartbeat with Locking

DruidConnectionHolder connection = connections[0];

if (connection == null || connection.getConnection() == null) {

LOG.info("The connection array is empty,no need hearbeat");

return;

}

//we remove it from the connection arrays with Locking

try {

System.arraycopy(connections, 1, connections, 0, poolingCount - 1);

Arrays.fill(connections, poolingCount - 1, poolingCount, null);

poolingCount -= 1;

} catch (Exception e) {

LOG.error("Remove connection from arrays,exception caught", e);

} finally {

lock.unlock();

}

//now we can do the heartBeat without lock

boolean validate = testConnectionInternal(connection.getConnection());

LOG.info("now we do heartbeat");

if (!validate) {

LOG.info("skip not validate connection.");

//if empty signal it

discardConnection(connection.getConnection());

destroyCount.incrementAndGet();

//if not valid,close it and do the next heart beat

continue;

} else {

//we can't use lockInterruptibly,beacuse the connectin may lost

lock.lock();

//if valid,put the connection back

try {

//the poolingCount can increase

if(poolingCount < maxActive){

//if notempty not signal it

putLast(connection, System.currentTimeMillis());

}else{

discardConnection(connection.getConnection());

destroyCount.incrementAndGet();

}

} catch (Exception e) {

LOG.error("heartbeat put last exception caught ", e);

} finally {

lock.unlock();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值