对于每一个servlet 服务器只创建它的一个对象 并为每个请求分配一个线程对servlet实例进行访问 ;在对数据库进行访问时 却需要一个connection

乔见你妹 2015-07-19 05:06:32
对于每一个servlet 服务器只创建它的一个对象 并为每个请求分配一个线程对servlet实例对象进行访问 ;在对数据库进行访问时 却需要一个connection 实例对象 而且在连接池中保存着数个connection对象
为什么请求线程不是获得一个完整的全新servlet对象
为什么不只创建一个connection对象 来供访问的线程共享使用呢
...全文
320 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq_35470489 2017-04-17
上楼说的有道理
回复
心碎了无痕 2015-07-19
同步则说明同一时刻就只有一个线程能访问这个连接对象,其他想要访问这个连接对象的话都需要等待,如果只有一个连接对象的情况,在并发量大的情况下,每次都要等待获取锁,获取锁,获取对象,释放锁。如果你有多个连接对象的话将会缩短等待时间提高访问效率。举个例子:10个人买票,一种方式是只有一个卖票窗口,另一种方式是有10个卖票窗口,你觉的哪种方式会快。 希望对你有帮助!
回复
乔见你妹 2015-07-19
引用 1 楼 lixiaojiaolixiaoyan 的回复:
servlet共享一个,感觉首先内存占用少,毕竟并发上来之后如果每次都创建的话,内存消耗很大,另一方面servlet只有一个对象的话,可以只在第一次请求过来时候创建一个对象,然后调用init初始化一些参数之后就可以在后面直接使用了。 connection链接利用链接池的概念,这样在服务启动时候直接创建固定数量的链接,避免在高并发线程请求时候不断的创建链接,这样会消耗大量的资源,这样就把这资源消耗的过程放在了服务启动的过程中。
这个引用是回复的意思吗 不太会用csdn...
回复
乔见你妹 2015-07-19
@CoderToSurvive 为什么connection连接不搞成只创建一个connection对象 然后利用多线程调用这个对象的方法 正好可以在java代码层上可以加一些同步 互斥之类的语法 来实现数据库的事务 我不是钻牛角尖 只是好奇想探究一下
回复
CoderToSurvive 2015-07-19
servlet共享一个,感觉首先内存占用少,毕竟并发上来之后如果每次都创建的话,内存消耗很大,另一方面servlet只有一个对象的话,可以只在第一次请求过来时候创建一个对象,然后调用init初始化一些参数之后就可以在后面直接使用了。 connection链接利用链接池的概念,这样在服务启动时候直接创建固定数量的链接,避免在高并发线程请求时候不断的创建链接,这样会消耗大量的资源,这样就把这资源消耗的过程放在了服务启动的过程中。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-07-19 05:06
社区公告
暂无公告