在MongoDB中的线程安全性读写访问
在MongoDB中的线程安全性读写访问
我正在尝试更新MongoDb数据库中的一个名为StaticsModel的实体。该实体具有属性,如mapped(int)、date(日期)、sent(int)、id(主键)等。我在不同的API中为同一个日期更新同一个实体,例如,在一个API中我更新了发送数量,在另一个API中我更新了映射数量等。以下代码是否线程安全?因为当多台计算机同时访问多个API时,我会得到相同日期的不同结果。例如,当我更新映射数量时,发送数量会得到另一个随机变量。如何使这段代码线程安全?我认为将属性设置为原子操作可以解决问题,但现在我有些怀疑。谢谢。
StatisticsModel statisticsModel = new Statistics(); String today = new SimpleDateFormat("dd-MM-yyyy").format(new Date()); statisticsModel.setDate(today); ListstatisticsCreate = statisticsRepository.findByDate(today); if (statisticsCreate.size() < 1) atomicLong.set(0); for (StatisticsModel statisticsModelRes : statisticsCreate) { statisticsModel.setMapped(statisticsModelRes.getMapped()); statisticsModel.setSent(statisticsModelRes.getSent()); } statisticsModel.setReceived(atomicLong.incrementAndGet()); statisticsRepository.upsert(statisticsModel);
编辑:我觉得我的问题与这个问题几乎相似: