为什么多线程处理一个集合反而还不如单线程处理速度运行快

测试循环向集合中添加1000万次数据,然后多线程处理反而没有单线程快,是因为加了线程锁的缘故吗

单线程:
图片说明

多线程:图片说明

加了线程锁,等于还是单线程(始终都只有一个线程执行,别的都在等待),因为还有线程切换的开销,所以更慢了。

楼上说得对。因为你操作的是一个list,加锁后也是相当于单线程。线程切换会消耗性能。这里有个误区就是:线程越多执行越快,越省时间。
这种要分业务场景,就比如计算100万个随机数相加,单线程就是一个个的加,多线程执行时,我就起5个线程,每个处理20个数,每个线程处理完后主线程累加就行。
这样执行结果就比单线程块