java jdbc 是连接池吗_java – 与JDBC的连接池现在仍在提高性能吗?

如果每个查询100毫秒适合您,那么您不需要连接池.如果您需要小于20毫秒的查询,则重用连接至关重要.

如果您的驱动程序支持自己的连接池,我建议您使用它(如果它已经不适合您).只有当你想要更好地控制如何汇集连接时,你才可以使用一个额外的库(我自己从未找到过很好的用途)

注意:您无需使用池来重用连接.

重用连接的一种简单方法是使用一个持久连接(具有适当的线程安全防护)如果您的查询很少,这可能就是您所需要的.

如果您希望能够同时执行查询并且只有几个将执行查询的线程,则可以在ThreadLocal字段中存储连接.

如果您想要多个连接,并且您有更多线程可以执行查询而不是您想要的连接,请使用池.

对于ThreadLocal模型,您可以这样做

public static final ThreadLocal CONNECTION = new ThreadLocal() {

public Connection initialValue() {

LOG.info(Thread.currentThread()+": created a connection.");

return createConnection();

}

};

如果要控制连接的清理方式.

private static final Map connections = new ConcurrentHashMap();

public static final ThreadLocal CONNECTION = new ThreadLocal() {

public Connection initialValue() {

LOG.info(Thread.currentThread()+": created a connection.");

Connection conn = createConnection();

connections.put(Thread.currentThread(), conn);

return conn;

}

};

public static void cleanUp() {

for(Map.Entry entry: connections.entrySet()) {

Thread t = entry.getKey();

if (!t.isAlive()) {

LOG.info(t+": closed a connection.");

connections.remove(t);

entry.getValue().close();

}

}

}

如果您担心获得死连接,可以在返回之前覆盖ThreadLocal的get()以测试连接.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值