spring - Spring,JPA,Hibernate,按预期数量递增/递减变量
问题描述
我有一个属于实体的Integer
变量。numberOfPeople
如果一个人加入系统或离开系统,numberOfPeople
应该加1或减1。
以下是我这样做的两个片段:
增量:
world.setNumberOfPeople(world.getNumberOfPeople() + 1);
减量:
world.setNumberOfPeople(world.getNumberOfPeople() - 1);
我注意到这会导致意外行为。有时变量会增加,有时会增加超过一,有时会保持不变。
实现预期行为的最佳方法是什么?请注意,这些操作是作为更大方法的一部分发生的,并且此事务服务中正在发生其他事情(其他变量也正在修改)。
解决方案
您可以使用AtomicInteger
为了增加和减少一个整数值。
//Initial value is 0
AtomicInteger atomicInteger = new AtomicInteger();
atomicInteger.set(world.getNumberOfPeople());
或者
//Initial value is getNumberOfPeople()
AtomicInteger atomicInteger = new AtomicInteger(world.getNumberOfPeople());
增量:
world.setNumberOfPeople(atomicInteger.incrementAndGet());
减量:
world.setNumberOfPeople(atomicInteger.decrementAndGet());
参考 原子整数文档
推荐阅读
- javascript - 有办法将“.then 回调”与 useEffect 一起使用吗?
- react-native - React Native 用户登录问题(AsyncStorage)
- angular - Angular 9 中的环境实现
- java - 从非活动类调用 MainActivity 类的方法
- base64 - 是否可以从八位字节流中提取文件名?
- python - How to drop rows in a data frame having any entry with the value zero ? ('collections.OrderedDict' object has no attribute 'dropna')
- c++ - 使用从 operator new 返回的指针作为指向数组元素的指针时,是否是未定义的行为
- javascript - Sequelize 添加多对多关系与其他数据不起作用
- reactjs - ReactDOM.createRoot 无法将组件挂载到 DOM 中
- javascript - 如何在 ReactJS 中应用我的 Vanilla JS 数组操作方法