我听说jbdc在多线程访问方面有问题。我也听boneCP在另一篇文章中推荐过,但我想知道是否有人使用过另一种他们认为异步的东西简单且高性能的方法
另外,Apache版本说它可能无法在java1.6以上运行,我使用的是java.runtime.version: 1.7.0_07-b11
发布于 2013-03-23 11:54:10
在实践中尝试了一些其他API之后,我最终选择了BoneCP。我将它与Java1.7一起使用,即使在高并发的情况下,它也能很好地工作。此外,开发人员在报告问题时会做出响应。
我之前使用过C3P0,但在我切换到BoneCP之后,它有一些非常奇怪的bug消失了。如果您深入研究一下C3P0,就会发现它已经有几年没被开发过了,而且刚刚恢复了开发。在我的应用程序中,它在奇怪的时候崩溃了。
我使用普通Mysql JDBC包中的MysqlConnectionPoolDataSource。然后我只做如下设置(你可以随意调整设置):
pbds = new BoneCPDataSource();
pbds.setDatasourceBean(mysqlcpds);
pbds.setMinConnectionsPerPartition(1);
pbds.setMaxConnectionsPerPartition(10);
pbds.setIdleConnectionTestPeriodInMinutes(60);
pbds.setIdleMaxAgeInMinutes(240);
pbds.setPartitionCount(1);然后,您只需从该对象获取Connections (它是线程安全的)。我使用来自几个线程的相同代码;Java7 try-with-resources块特别方便,并且避免了许多样板(不需要finally,并且保证连接是关闭的):
try( Connection conn = pbds.getConnection() ) {
... do stuff with conn
} catch (SQLException e) {
e.printStackTrace();
} https://stackoverflow.com/questions/15583042
复制相似问题