最近,为适应业务需要,需要在原来多线程的地方改用连接池,因为在没用连接池之前服务器上老是拿不到连接。
环境:MSsqlserver 2000+JDK1.6+resin
我用的C3p0线程池(jtds驱动)
C3p0配置如下:
想的是:在我七个线程里面共用一个 dataSource,想当然的我就把申明成了一个static的,但在运行时发现当线程池里的
connection用过之后,连接池便不再自动地去拿连接了,线程也就不再运行了,当时还老报一个MS.sqlException的异常;刚开始以为是c3p0配置问题,在网上查了好久包括上到C3p0的官方网站上也没有解决这个问题。弄了两三个小时,最后我想可能是static+多线程的锁出的问题吧,第二天上班时将其改成用单例模式实现,成功解决上述问题。
主要收获两点:
1,不要过度紧张配置文件,认为那个地方没配好就导致玩不下去了,这往往会误导你解决问题的方向发生偏离。
2,要小心static,凡是定义为static的他的内容在内存中便永久性地存在了,不会再作任何改变了。
另外:对于多线程的共用对象,也更体会深刻了。对于static的一定为切加小心。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/176457.html