线程池操作数据库存在线程安全问题

目录

1、前言

2、问题

3、解决方法

3.1、方法一:数据库约束

3.2、方法二:使用锁进行线程的约束

4、总结


1、前言

        当前需求为:处理数据,将数据存储到数据库中,在存储的过程中,会先查询该数据是否已经存储在数据库中,由于处理数据过大,需要采用线程池的方式进行同时处理。

2、问题

        采用以上手段编写逻辑时,会存在线程安全问题:边查边插(数据库查询数据不一致问题),导致数据的重复插入。因此需要采用手段约束数据重复的问题。

3、解决方法

3.1、方法一:数据库约束

        给数据库中某个字段设计为唯一索引,即使在查询的时候没有查到相应的数据记录(实际已经存在数据库中),在插入的时候会报错字段重复的错误异常,导致数据记录插入失败,从而达到去重的问题。

3.2、方法二:使用锁进行线程的约束

        根据实际业务场景选择合适的锁策略。乐观锁适用于写入冲突较少的场景,悲观锁适用于写入冲突较多的场景。

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值