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

前端之家收集整理的这篇文章主要介绍了java – 同步在值上,而不是对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在 Java中做这样的事情
  1. public void giveMoney(String userId,int money) {
  2. synchronized (userId) {
  3.  
  4. Profile p = fetchProfileFromDB(userId);
  5. p.setMoney(p.getMoney() + userId);
  6. saveProfileToDB(p);
  7.  
  8. }
  9. }

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

解决方法

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

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

猜你在找的Java相关文章