前端之家收集整理的这篇文章主要介绍了
java – 同步在值上,而不是对象,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在
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
这样的东西,如果你需要更多的控制实习.
原文链接:https://www.f2er.com/java/124625.html