请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

用户判重

如果多个线程同时对同一个用户名进行判重,假如其中一个线程已执行完数据库的insert操作,而另一个线程读取到insert之前的状态,依然进行insert操作,必然违反唯一约束。这样的操作线程安全吗?

正在回答 回答被采纳积分+3

1回答

张勤一 2019-03-04 16:02:33

同学你好:

    你说的这种情况在单实例的情况下是不可能发生的。因为单实例对这里的操作不可能是起多个线程来操作的(所以,这并不是一个线程安全的问题)。对于多实例,如果某一方的操作过程卡住,那么,是有可能抛出唯一性约束异常的。这里使用 try catch 捕获异常,并给出保存出错的结果就可以了。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持! 

1 回复 有任何疑惑可以回复我~
  • 老师 这里没懂,为什么这种情况下单实例是不可能发生的,多线程是可以操作单实例的吧,请老师详细讲一下
    回复 有任何疑惑可以回复我~ 2019-03-18 23:10:29
  • 那如果假如是多个客户端同时发起请求用户判重,是不是也有同样的问题
    回复 有任何疑惑可以回复我~ 2019-03-18 23:11:43
  • 单实例内怎么会有操作用户数据这种问题呢,这显然是逻辑错误
    回复 有任何疑惑可以回复我~ 2019-03-18 23:16:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信