Mapping 使用springframework mongotemplate findone api时并发修改异常

Mapping 使用springframework mongotemplate findone api时并发修改异常,mapping,spring-data-mongodb,mongotemplate,Mapping,Spring Data Mongodb,Mongotemplate,如果我在一个线程中运行我的程序,我看不到任何异常。只有在多线程环境中,多个线程同时对同一集合进行读写时,才会出现此问题。我没有固定的测试用例,因为这是在代码的不同位置随机发生的。它发生在同一个API上,我使用FindOne函数调用从数据库中获取一条记录 java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)

如果我在一个线程中运行我的程序,我看不到任何异常。只有在多线程环境中,多个线程同时对同一集合进行读写时,才会出现此问题。我没有固定的测试用例,因为这是在代码的不同位置随机发生的。它发生在同一个API上,我使用
FindOne
函数调用从数据库中获取一条记录

java.util.ConcurrentModificationException
        at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
        at java.util.ArrayList$Itr.next(ArrayList.java:831)
        at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:305)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:266)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:230)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readCollectionOrArray(MappingMongoConverter.java:898)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1159)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.access$200(MappingMongoConverter.java:77)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1110)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getValueInternal(MappingMongoConverter.java:861)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:278)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:266)
        at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:307)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:266)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:230)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:190)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:186)
        at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:77)
        at org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:2128)
        at org.springframework.data.mongodb.core.MongoTemplate.executeFindOneInternal(MongoTemplate.java:1766)
        at org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1582)
        at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:497)

您正在运行带有非线程安全函数的多线程代码。您需要添加锁,以防止多个线程访问同一数据

你能提供一些代码示例吗?