如图。
我想查询早上8点到下午15点的数据。
我一次性执行的话。需要8秒。
然后我就想:如果7个线程同时执行是不是快点。 ?
可是结果并不快,而且还慢了。
如图。
我想查询早上8点到下午15点的数据。
我一次性执行的话。需要8秒。
然后我就想:如果7个线程同时执行是不是快点。 ?
可是结果并不快,而且还慢了。
理论上多个线程应该是比较快的,特别是用newCachedThreadPool,吞吐量会比较高。楼主执行的慢应该是在自己工作的电脑上执行的。工作的电脑CPU会被很多应用占着,所以无法发挥多核优势。同时多线程切换也比较耗时间,所以感觉比单线程执行的慢。
我之前在自己电脑上实验ForkJoin,发现也没有单线程执行的快!
关键的是那么多线程用的是一个testMapper变量, 这被后也是同一个jdbc connection, 加上线程切换的时间,慢是一定的了。jdbc的多线程要想快需要建立的多个connection的基础上, 你试试new 多个不同的mapper类试试。
15 回答8.2k 阅读
8 回答6k 阅读
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
你要分析性能瓶颈在哪里,如果是cpu,而且你有很多个cpu核心的话,可以用多线程来提高速度,但线程数应该等于cpu核心数,超过就没用反而更慢。如果性能瓶颈在磁盘io,那你用多少个线程都没用。