Re: барьеры памяти, многопоточность
От: vsb Казахстан  
Дата: 17.01.15 22:04
Оценка:
Здравствуйте, stuav, Вы писали:

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


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

Смоделировал вашу ситуацию. Перебор через entrySet часто падает с ConcurrentModificationException. Иногда с NullPointerException. простой get() исключений не кидает, но часто возвращает неверные результаты (не то значение, которое клали по данному ключу). Вот код: http://pastebin.com/P8QtD2R3 можете погонять у себя. Это, конечно, не совсем ваша ситуация, тут никакой синхронизации нет вообще. Но скорее всего у вас есть все шансы достать неверное значение в полнолуние.

Лучше сделать как положено.
Отредактировано 17.01.2015 22:24 vsb . Предыдущая версия . Еще …
Отредактировано 17.01.2015 22:21 vsb . Предыдущая версия .
Отредактировано 17.01.2015 22:19 vsb . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.