Информация об изменениях

Сообщение Re: барьеры памяти, многопоточность от 17.01.2015 22:04

Изменено 17.01.2015 22:19 vsb

Здравствуйте, stuav, Вы писали:

S>Я так понял исходя из статьи что читающие потоки могут получать не консистентное (не последнее) состояние globalMap


Читающие потоки могут получать не просто не последнее состояние, а в общем случае вообще самые причудливые состояния. TreeMap штука не тривиальная и что там может происходить без нормальной синхронизации – даже представить страшно.
Здравствуйте, stuav, Вы писали:

S>Я так понял исходя из статьи что читающие потоки могут получать не консистентное (не последнее) состояние globalMap


Читающие потоки могут получать не просто не последнее состояние, а в общем случае вообще самые причудливые состояния. TreeMap штука не тривиальная и что там может происходить без нормальной синхронизации – даже представить страшно.

Смоделировал вашу ситуацию. Перебор через entrySet часто падает с ConcurrentModificationException. Иногда с NullPointerException. простой get() исключений не кидает, но часто возвращает неверные результаты (не то значение, которое клали по данному ключу).