ConcurrentModificationException даже при использовании Collections.sychronizedMap в LinkedHashMap [duplicate]
На этот вопрос уже есть ответ:
Итерация по Коллекции, исключение ConcurrentModificationException при удалении объектов в цикле 23 ответа Почему выброшено исключение ConcurrentModificationException и как его отладить 6 ответовConcurrentModificationException, несмотря на использование синхронизированного 2 ответаЯ использую объект Map в своем классе, который я синхронизировал с Collections.synchronizedMap () для LinkedHashMap следующим образом:
private GameObjectManager(){
gameObjects = Collections.synchronizedMap(new LinkedHashMap<String, GameObject>());
}
В третьей строке этой функции я получаю исключение одновременной модификации:
public static void frameElapsed(float msElapsed){
if(!INSTANCE.gameObjects.isEmpty()){
synchronized(INSTANCE.gameObjects){
for(GameObject object : INSTANCE.gameObjects.values()){...}
}
}
}
Во всех других местах, где я перебираю карту, я синхронизируюсь на карте в соответствии с документами.
В моем классе есть другие функции, которые используют эту Карту (синхронизированную!), И они помещают () и удаляют () объекты, но это не должно иметь значения. Что я делаю не так? Пожалуйста, попросите больше кода, не уверен, что еще поставить.
Ой, и сообщение журнала:
08-20 15:55:30.109: E/AndroidRuntime(14482): FATAL EXCEPTION: GLThread 1748
08-20 15:55:30.109: E/AndroidRuntime(14482): java.util.ConcurrentModificationException
08-20 15:55:30.109: E/AndroidRuntime(14482): at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:350)
08-20 15:55:30.109: E/AndroidRuntime(14482): at java.util.LinkedHashMap$ValueIterator.next(LinkedHashMap.java:374)
08-20 15:55:30.109: E/AndroidRuntime(14482): at package.GameObjectManager.frameElapsed(GameObjectManager.java:247)
08-20 15:55:30.109: E/AndroidRuntime(14482): at package.GamekitInterface.render(Native Method)
08-20 15:55:30.109: E/AndroidRuntime(14482): at package.GamekitInterface.renderFrame(GamekitInterface.java:332)
08-20 15:55:30.109: E/AndroidRuntime(14482): at com.qualcomm.QCARSamples.ImageTargets.GameEngineInterface.onDrawFrame(GameEngineInterface.java:107)
08-20 15:55:30.109: E/AndroidRuntime(14482): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1516)
08-20 15:55:30.109: E/AndroidRuntime(14482): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)