我写了一个servlet,这个servlet高并发的可能性很大,为了节省连接数据库的开销,我在这个servlet的生命周期最开的时候(或者servlet实例生成的时候)生成一个数据源,然后希望以后的每一个线程都去使用这个数据源,这样会不会产生多线程同步问题?有没有必要加上synchronized?我使用的是tomcat7带的jdbc.pool连接池。如果每次都要重新生成连接池的话开销一定很大,想请教一下大家是怎么做的!!!
会出现你说的问题,不用加同步吧,多连接会慢死的。因为你已经有连接池了,只要正常open与close就可以了。
1、最好不让上servlet长期占用jdbc连接(减小并发),你可以写个dao来完成数据读取。再输出显示。
可以这样理解
List result=dao.read(..);//读取数据库,dao中完成open,resultset,close(注意close的写法)
for(){
输出页面
}
2、或者调一调连接池的大小与性能指标,或换高性能连接池如BoneCP。
如果你用jndi获取的是tomcat7的连接池,不会有大开销。不然就不叫连接池了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。