|
ConcurrentModificationException Помогите разобраться с ошибкой.
|
|||
---|---|---|---|
#18+
Упорно вылезает следующая ошибка: runjava.util.ConcurrentModificationException at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1495) at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1518) at Model.FineReader.SubServerFinereader.run(SubServerFinereader.java:71) - в представленном коде сторока 10 "for(String key: listFineReaderTaskskeySet) {" at java.base/java.lang.Thread.run(Thread.java:830) Не могу понять с чем это связано. И прошу помощи. Идея в том что по мере запуска процессов, чистятся две очереди заданий, общая (статик) и обычная принадлежащая экземпляру объекта. Процессов одновременно не должно быть больше 5. Но это все не важно. Проблема именно с удалением из Код: java 1. 2.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 20:45 |
|
ConcurrentModificationException Помогите разобраться с ошибкой.
|
|||
---|---|---|---|
#18+
ToTAmon Не могу понять с чем это связано просто сообщение об ошибке немного вводит в заблуждение. у тебя synchronized блок защищает только удаление, а чтение у тебя как раз в той самой 10-й строке не-синхронизировано и ошибка выскакивает из-за того, что один поток читает не синхронизированную коллекцию, которую другой поток в это время уже поменял. Короче это защита от проктологов типа тебя, чтоб не сломали себе мозг от необъяснимой магии мультипоточки ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 21:34 |
|
ConcurrentModificationException Помогите разобраться с ошибкой.
|
|||
---|---|---|---|
#18+
ToTAmon, Сам спросил сам разобрался. Добавил Код: java 1.
И все нормализовалось. Можно закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 21:35 |
|
ConcurrentModificationException Помогите разобраться с ошибкой.
|
|||
---|---|---|---|
#18+
chpasha, Спасибо. Да synchronized (ServerMedconsult.tasksAll) { synchronized (this.listFineReaderTasks) { Разместил над циклом и заработало. Подскажите плиз, а как надо было сделать по уму? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 21:36 |
|
ConcurrentModificationException Помогите разобраться с ошибкой.
|
|||
---|---|---|---|
#18+
ToTAmon Подскажите плиз, а как надо было сделать по уму? использовать синхронизированные коллекции, зачем этот велосипед с synchronized если есть ConcurrentHashMap ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 21:40 |
|
ConcurrentModificationException Помогите разобраться с ошибкой.
|
|||
---|---|---|---|
#18+
chpasha использовать синхронизированные коллекции, зачем этот велосипед с synchronized если есть ConcurrentHashMap Да, я мало работал с потоками. Честно считал, что так как у меня запись и удаление в синглтон помещены то все норм, и можно использовать привычные коллекции. Был не прав значит. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2020, 23:43 |
|
ConcurrentModificationException Помогите разобраться с ошибкой.
|
|||
---|---|---|---|
#18+
chpasha ToTAmon Подскажите плиз, а как надо было сделать по уму? использовать синхронизированные коллекции, зачем этот велосипед с synchronized если есть ConcurrentHashMap ConcurrentHashMap не синхронизированная, а потокобезопасная. Там внутри много магии, а synchronized мало ... |
|||
:
Нравится:
Не нравится:
|
|||
01.07.2020, 20:16 |
|
|
start [/forum/topic.php?fid=59&msg=39974792&tid=2120756]: |
0ms |
get settings: |
4ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
29ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
133ms |
get tp. blocked users: |
0ms |
others: | 305ms |
total: | 482ms |
0 / 0 |