加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 同步在值上,而不是对象

发布时间:2020-12-14 16:39:18 所属栏目:Java 来源:网络整理
导读:我想在 Java中做这样的事情 public void giveMoney(String userId,int money) { synchronized (userId) { Profile p = fetchProfileFromDB(userId); p.setMoney(p.getMoney() + userId); saveProfileToDB(p); } } 但是当然,字符串同步是不正确的.什么是正确
我想在 Java中做这样的事情
public void giveMoney(String userId,int money) {
    synchronized (userId) {

        Profile p = fetchProfileFromDB(userId);
        p.setMoney(p.getMoney() + userId);
        saveProfileToDB(p);

    }
   }

但是当然,字符串同步是不正确的.什么是正确的方法来做这样的事情?

解决方法

如果用户ID集合受限,您可以在内部版本的String上进行同步.

使用String.intern()(它有一些缺点)或像Guava Interners这样的东西,如果你需要更多的控制实习.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读