powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / HashMap на чтение несколькими потоками
11 сообщений из 36, страница 2 из 2
HashMap на чтение несколькими потоками
    #39870911
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouchquestioner,

В вашем примере put и get выполняются без синхронизации (1е чтение) и именно поэтому при вызове .get мы можем получить что угодно. Поэтому этот пример и не работает. Упоминание LinkedHashMap полезено только с точки зрения того, что без исходников мы не можем сказать, изменяет ли состояние вызов метода.

А может в новой версии джавы что-то поменяется...

А зачем вообще думать о том о чем не надо думать? это такой вид онанизма?

Doug Lea(тоже не самый последний дядька если что) вообще рекомендует использовать CHM вместо HM ибо ничего ты на этом не потеряешь
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39870912
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Brian GoetzHashMap is not thread-safe. Bam, end of story.


ВСЁ. дальше даже думать не надо ни о чем
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39870913
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerLelouchquestioner,

В вашем примере put и get выполняются без синхронизации (1е чтение) и именно поэтому при вызове .get мы можем получить что угодно. Поэтому этот пример и не работает. Упоминание LinkedHashMap полезено только с точки зрения того, что без исходников мы не можем сказать, изменяет ли состояние вызов метода.

А может в новой версии джавы что-то поменяется...

А зачем вообще думать о том о чем не надо думать? это такой вид онанизма?

Doug Lea(тоже не самый последний дядька если что) вообще рекомендует использовать CHM вместо HM ибо ничего ты на этом не потеряешь

Ну меня тут интересует именно спортивный интерес про jmm. С практической точки зрения я бы тоже thread safe реализацию бы использовал.
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39870914
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouchquestionerпропущено...


А может в новой версии джавы что-то поменяется...

А зачем вообще думать о том о чем не надо думать? это такой вид онанизма?

Doug Lea(тоже не самый последний дядька если что) вообще рекомендует использовать CHM вместо HM ибо ничего ты на этом не потеряешь

Ну меня тут интересует именно спортивный интерес про jmm. С практической точки зрения я бы тоже thread safe реализацию бы использовал.

Потом же захочется в продакшене то свои знания применить... и порядок добавления будет нужен и поменяется имплементация мапы и всё свалится....
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39870916
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerLelouchпропущено...


Ну меня тут интересует именно спортивный интерес про jmm. С практической точки зрения я бы тоже thread safe реализацию бы использовал.

Потом же захочется в продакшене то свои знания применить... и порядок добавления будет нужен и поменяется имплементация мапы и всё свалится....

В моем случае нет, мне приходилось отлаживать гонки, так что я лучше перестрахуюсь:)
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39870937
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch
В моем случае нет, мне приходилось отлаживать гонки, так что я лучше перестрахуюсь:)

Вообще я отвечаю на вопрос на ТСа)
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39871166
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вооооот! Я же говорю, мы не знаем что там внутри HashMap на чтение (вдруг там правда какие-то внутренние рычаги дергаются которые меняют state). Или, все верно, в следующих версиях что поменяется. Вообщем чисто теоретически. Поменяю-ка я на ConcurrentHashMap. Котелок-то варит еще, почувствовал неладное и пошел сюда!
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39871167
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterВооооот! Я же говорю, мы не знаем что там внутри HashMap на чтение (вдруг там правда какие-то внутренние рычаги дергаются которые меняют state). Или, все верно, в следующих версиях что поменяется. Вообщем чисто теоретически. Поменяю-ка я на ConcurrentHashMap. Котелок-то варит еще, почувствовал неладное и пошел сюда!

Кстати, для собеседования норм может быть задачка, спросить про такой пример с HashMap на чтение и посмотреть как кандидат поразмышляет (ну если вообще про многопоточку спрашивать).
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39871183
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
 public LinkedHashMap(int initialCapacity,
                         float loadFactor,
                         boolean accessOrder) {
        super(initialCapacity, loadFactor);
       this.accessOrder = accessOrder;
    }

public V get(Object key) {
        Node<K,V> e;
        if ((e = getNode(hash(key), key)) == null)
            return null;
        if (accessOrder)
            afterNodeAccess(e);
        return e.value;
    }



т.е. нет никакого противоречия - HashMap.get не вызывает структурных изменений, LinkedHashMap - вызывает.

rabiterвдруг там правда какие-то внутренние рычаги дергаются которые меняют state
а вдруг в Math.random тоже какие-то внутренние рычаги дергаются которые меняют state не смотря на то, что дока утверждает обратное? А вдруг он станет потоконебезопасен в 20й версии явы?

rabiterПоменяю-ка я на ConcurrentHashMapэто другое дело - если существует специальная потокобезопасная версия того же самого, то нет причин ее игнорировать.
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39871187
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha
rabiterПоменяю-ка я на ConcurrentHashMapэто другое дело - если существует специальная потокобезопасная версия того же самого, то нет причин ее игнорировать.

Возвращаемся к вопросу о том как эта мапа будет использоваться. Операции size и empty могут выдавать немного то что хотелось бы(зависит от юскейса) - в данном случае это ок
...
Рейтинг: 0 / 0
HashMap на чтение несколькими потоками
    #39871196
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rabiterrabiterВооооот! Я же говорю, мы не знаем что там внутри HashMap на чтение (вдруг там правда какие-то внутренние рычаги дергаются которые меняют state). Или, все верно, в следующих версиях что поменяется. Вообщем чисто теоретически. Поменяю-ка я на ConcurrentHashMap. Котелок-то варит еще, почувствовал неладное и пошел сюда!

Кстати, для собеседования норм может быть задачка, спросить про такой пример с HashMap на чтение и посмотреть как кандидат поразмышляет (ну если вообще про многопоточку спрашивать).

Обычно нужно найти человека, который решает проблемы, а не ищет себе проблемы там, где их и нет.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / HashMap на чтение несколькими потоками
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]