java多线程逻辑情况
S1: Lookup for some input data
S2: IF not found SET IT
S3: INSERT DATA
S4: ELSE RETURN
最初没有存储任何数据。 如果两个线程同时查找相同的输入数据,则在这两种情况下查找都返回FALSE。然后两者都会经历长时间设置阶段。最后,单例服务线程在非同步插入方法中插入条目
通过这种方式,尽管查找的目的是永远不会让相同的数据丢失两次,但由于两个线程处理相同的数据,它的目的并没有得到解决。如何在多线程程序中处理这种情况
# 1 楼答案
已应用双重检查锁定:
# 2 楼答案
如果您使用的是数据库,那么您一直在寻找的关键字是upsert
如果是普通编码,您可能需要atomics或synchronization
如果你能澄清你的问题,也许我们可以进一步帮助你