日期:2014-05-20  浏览次数:20887 次

java 开多线程,反而变慢,请教高手?
先需要查询一条数据,而这条数据包含很多种数据,所以在查询里面,就需要分别查询包含的数据,然后再组装数据。以前是一个一个的查询,然后再组装,所以我就在此开了3个线程,同时查询数据,然后等到数据查询完后进行组装,我感觉有性能提升,但是验证结果却是变慢了,这是怎么回事?请教高手。

------解决方案--------------------
java开3个线程执行查询,到数据库是不是也是多线程查询的呢,即使数据库是多线程执行了,还得看数据库的具体情况,因为一般而言,多线程性能提升也是在原先单线程执行有资源浪费比如等待等等的情况下
------解决方案--------------------
或未充分利用现有资源的情况下
------解决方案--------------------
线程切换也是要消耗资源的,数据库频繁开关连接也是要消耗资源的。
------解决方案--------------------
因为你只有一个 CPU,充其量也只是两个蛋黄,最多也就能支持两个线程。

况且,数据库操作并不是 CPU 密集型的操作,它是 IO 密集型的操作,因此使用多线程不能提高性能!
------解决方案--------------------
如果楼主原先的单线程数据库查询均涉及复杂的运算和磁盘搜索,那么当是在主要消耗在cpu操作时,多线程方式同时执行磁盘操作,就会充分利用资源了而不浪费资源进而提高效率了
------解决方案--------------------
多重查询 或 存储过程
------解决方案--------------------
连接数据库要耗损很多很多资源.比你想象中大得多