记一次多线程安全问题

背景:由于数据库查询瓶颈,count太慢,于是拆分时间进行count,然后再累加count得出最终总数;但由于单线程轮询时间区间,再累加,用时间太长,造成慢接口,因此采用同步多线程,分段累加方法。

同步工具类:countdownlatch

异步线程城池:@Async

由于方法传入了公共变量,并作为查询db参数,此外还有list作为存储线程处理结果。所以这里埋下了两个线程安全隐患,就是放多个线程处理时,存在数据混乱存储问题

解决方案:在方法上加上方法锁,也就是synchronize,但这种处理方法,一定程度降低了并发效率

方案二:只锁住共享产量,减少锁粒度

方案三:无锁,也是最理想效果,将全局变量转化成局部变量

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容