spring,springboot,java,mybatis,mysql,web和数据库在一台服务器,不考虑主从复制等其他影响。
就是一个很无语的问题吧。
现在有一个需求,要创建一条数据。
情况如下:
如果没有这条数据则创建,有则直接返回。id为自增,无其他限制。
为了防止用户误操作,我加了线程锁,里面有if是否存在。
但现在问题是,他俩谁更慢一点。
我要不要采用双if校验。if 锁 if
因为我不知道他俩谁更慢一点
synchronized和查库哪个性能更差?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- Tomshidi 2022-04-28 15:19关注
首先,查库是无法避免重复插入的情况的,因为极大可能多个线程同时查询数据库没有记录,然后就都可以插入数据。
保险的办法是,使用用双重校验锁模式查库 if(库里不存在){ syn(){ 查库 if(库里不存在){ 存库 } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
- ¥15 seatunnel 怎么配置Elasticsearch
- ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
- ¥15 (标签-MATLAB|关键词-多址)
- ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
- ¥500 52810做蓝牙接受端
- ¥15 基于PLC的三轴机械手程序
- ¥15 多址通信方式的抗噪声性能和系统容量对比
- ¥15 msix packaging tool打包问题
- ¥15 finalshell节点的搭建代码和那个端口代码教程