|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
Lelouchquestioner, В вашем примере put и get выполняются без синхронизации (1е чтение) и именно поэтому при вызове .get мы можем получить что угодно. Поэтому этот пример и не работает. Упоминание LinkedHashMap полезено только с точки зрения того, что без исходников мы не можем сказать, изменяет ли состояние вызов метода. А может в новой версии джавы что-то поменяется... А зачем вообще думать о том о чем не надо думать? это такой вид онанизма? Doug Lea(тоже не самый последний дядька если что) вообще рекомендует использовать CHM вместо HM ибо ничего ты на этом не потеряешь ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 01:20 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
Brian GoetzHashMap is not thread-safe. Bam, end of story. ВСЁ. дальше даже думать не надо ни о чем ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 01:23 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
questionerLelouchquestioner, В вашем примере put и get выполняются без синхронизации (1е чтение) и именно поэтому при вызове .get мы можем получить что угодно. Поэтому этот пример и не работает. Упоминание LinkedHashMap полезено только с точки зрения того, что без исходников мы не можем сказать, изменяет ли состояние вызов метода. А может в новой версии джавы что-то поменяется... А зачем вообще думать о том о чем не надо думать? это такой вид онанизма? Doug Lea(тоже не самый последний дядька если что) вообще рекомендует использовать CHM вместо HM ибо ничего ты на этом не потеряешь Ну меня тут интересует именно спортивный интерес про jmm. С практической точки зрения я бы тоже thread safe реализацию бы использовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 01:26 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
Lelouchquestionerпропущено... А может в новой версии джавы что-то поменяется... А зачем вообще думать о том о чем не надо думать? это такой вид онанизма? Doug Lea(тоже не самый последний дядька если что) вообще рекомендует использовать CHM вместо HM ибо ничего ты на этом не потеряешь Ну меня тут интересует именно спортивный интерес про jmm. С практической точки зрения я бы тоже thread safe реализацию бы использовал. Потом же захочется в продакшене то свои знания применить... и порядок добавления будет нужен и поменяется имплементация мапы и всё свалится.... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 01:30 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
questionerLelouchпропущено... Ну меня тут интересует именно спортивный интерес про jmm. С практической точки зрения я бы тоже thread safe реализацию бы использовал. Потом же захочется в продакшене то свои знания применить... и порядок добавления будет нужен и поменяется имплементация мапы и всё свалится.... В моем случае нет, мне приходилось отлаживать гонки, так что я лучше перестрахуюсь:) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 01:36 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
Lelouch В моем случае нет, мне приходилось отлаживать гонки, так что я лучше перестрахуюсь:) Вообще я отвечаю на вопрос на ТСа) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 08:07 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
Вооооот! Я же говорю, мы не знаем что там внутри HashMap на чтение (вдруг там правда какие-то внутренние рычаги дергаются которые меняют state). Или, все верно, в следующих версиях что поменяется. Вообщем чисто теоретически. Поменяю-ка я на ConcurrentHashMap. Котелок-то варит еще, почувствовал неладное и пошел сюда! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 14:42 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
rabiterВооооот! Я же говорю, мы не знаем что там внутри HashMap на чтение (вдруг там правда какие-то внутренние рычаги дергаются которые меняют state). Или, все верно, в следующих версиях что поменяется. Вообщем чисто теоретически. Поменяю-ка я на ConcurrentHashMap. Котелок-то варит еще, почувствовал неладное и пошел сюда! Кстати, для собеседования норм может быть задачка, спросить про такой пример с HashMap на чтение и посмотреть как кандидат поразмышляет (ну если вообще про многопоточку спрашивать). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 14:43 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
rabiterЯ же говорю, мы не знаем что там внутри HashMap на чтение для этого существует документация. если в ней написано, что класс не потокобезопасен, значит так оно и есть. конкретно по HashMap написано дословно дока oracle по java 8Note that this implementation is not synchronized. If multiple threads access a hash map concurrently, and at least one of the threads modifies the map structurally , it must be synchronized externally про LinkedHashMap дока говорит следующее: авторIn access-ordered linked hash maps , merely querying the map with get is a structural modification. соответственно то, о чем пишет товарищ Götz касается особой разновидности LinkedHashMap созданной с помощью соотв. конструктора в чем можно убедится в исходнике Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
т.е. нет никакого противоречия - HashMap.get не вызывает структурных изменений, LinkedHashMap - вызывает. rabiterвдруг там правда какие-то внутренние рычаги дергаются которые меняют state а вдруг в Math.random тоже какие-то внутренние рычаги дергаются которые меняют state не смотря на то, что дока утверждает обратное? А вдруг он станет потоконебезопасен в 20й версии явы? rabiterПоменяю-ка я на ConcurrentHashMapэто другое дело - если существует специальная потокобезопасная версия того же самого, то нет причин ее игнорировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 15:08 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
chpasha rabiterПоменяю-ка я на ConcurrentHashMapэто другое дело - если существует специальная потокобезопасная версия того же самого, то нет причин ее игнорировать. Возвращаемся к вопросу о том как эта мапа будет использоваться. Операции size и empty могут выдавать немного то что хотелось бы(зависит от юскейса) - в данном случае это ок ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 15:22 |
|
HashMap на чтение несколькими потоками
|
|||
---|---|---|---|
#18+
rabiterrabiterВооооот! Я же говорю, мы не знаем что там внутри HashMap на чтение (вдруг там правда какие-то внутренние рычаги дергаются которые меняют state). Или, все верно, в следующих версиях что поменяется. Вообщем чисто теоретически. Поменяю-ка я на ConcurrentHashMap. Котелок-то варит еще, почувствовал неладное и пошел сюда! Кстати, для собеседования норм может быть задачка, спросить про такой пример с HashMap на чтение и посмотреть как кандидат поразмышляет (ну если вообще про многопоточку спрашивать). Обычно нужно найти человека, который решает проблемы, а не ищет себе проблемы там, где их и нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 15:40 |
|
|
start [/forum/topic.php?fid=59&startmsg=39870911&tid=2121088]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
164ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 234ms |
total: | 503ms |
0 / 0 |