|
|
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Все знают, что в многопоточной среде нужно использовать синхронизованные коллекции. Меня тут спросили, а что будет если использовать обычную хеш мапу? Вот тут я подзавис. Я так понимаю, что если будет например один поток вставлять в мапу значение, которое приведет к удвоению всей мапы(лоад фактор превышен), а другой читать в момент удвоения, то произойти что-то плохое, а вот что конкретно - не очень понимаю. Можете прояснить вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 20:25 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 20:36 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
questionerВсе знают, что в многопоточной среде нужно использовать синхронизованные коллекции. Меня тут спросили, а что будет если использовать обычную хеш мапу? Непредсказуемое поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 23:09 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
забыл никquestionerВсе знают, что в многопоточной среде нужно использовать синхронизованные коллекции. Меня тут спросили, а что будет если использовать обычную хеш мапу? Непредсказуемое поведение. Что-то подобное я конечно сказал, но от меня хотели конкретики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 23:10 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Null pointer exception ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 23:18 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Petro123questioner, поиск делали? http://begoml.by/hashmap-and-multithreading/ Код: java 1. 2. 3. 4. 5. 6. 7. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Не понял как параллельное исполнение этих участков кода приведет к циклической ссылке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 23:22 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
но это видимо общеизвестный факт http://stackoverflow.com/a/11050613/2674303 The get() goes to an infinite loop because one of the threads has only a partially updated view of the HashMap in memory and there must be some sort of pointer loop. That's the peril of using an unsynchronized collection with multiple threads. но конкретика мне не понятна( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 23:25 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Многопотоковое выполнение get втряд ли что-то может порушить. Т.ч. режим read only (только get) полностью безопасен. А вот если какой-то поток меняет данные - то тут уж кранты. Я, все же, думаю, что ошибка будет null pointer exception ))) хотя и an infinite loop тоже достаточно приятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 23:37 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
questionerзабыл никпропущено... Непредсказуемое поведение. Что-то подобное я конечно сказал, но от меня хотели конкретики "Непредсказуемое поведение" это очень даже конкретика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 07:25 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin"Непредсказуемое поведение" это очень даже конкретика. Я бы обозвал скорее "недетерминированным". Предсказать-то можно попробовать. Но то как именно оно будет работать однозначно сказать нельзя, потому что в зависимости от реализации эффекты от использования в многопоточной среде могут быть любыми. Очень странный и глупый вопрос как для собеседования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 08:26 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Пытаться понять почему get() может уйти в бесконечный цикл считаете нецелесообразным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:35 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
questionerПытаться понять почему get() может уйти в бесконечный цикл считаете нецелесообразным? Вы снова интерпретируете мои слова каким-то странным образом. Нецелесообразно спрашивать на интервью и нецелесообразно разбираться для самообучения - разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:47 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerПытаться понять почему get() может уйти в бесконечный цикл считаете нецелесообразным? Вы снова интерпретируете мои слова каким-то странным образом. Нецелесообразно спрашивать на интервью и нецелесообразно разбираться для самообучения - разные вещи. Да, я не пытался интрепретировать. Просто отдельный вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:49 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
questionerДа, я не пытался интрепретировать. Просто отдельный вопрос. А давайте посмотрим на Java 8? Там может оказаться что никакого бесконечного цикла в HashMap уже и нет, например. Именно по этой причине правильный ответ на такой вопрос "недетерменированное поведение". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:52 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerДа, я не пытался интрепретировать. Просто отдельный вопрос. А давайте посмотрим на Java 8? Там может оказаться что никакого бесконечного цикла в HashMap уже и нет, например. Именно по этой причине правильный ответ на такой вопрос "недетерменированное поведение". Чтобы понять может или не может, на мой взгляд, надо понять по какой причине это случается в java 6 (ну или для какой это пример). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:56 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, или это в доке где-то написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:56 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin"Непредсказуемое поведение" это очень даже конкретика. )))) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:56 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
questionerPetro123questioner, поиск делали? http://begoml.by/hashmap-and-multithreading/ Код: java 1. 2. 3. 4. 5. 6. 7. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Не понял как параллельное исполнение этих участков кода приведет к циклической ссылке Кажется тут объяснение http://mailinator.blogspot.ru/2009/06/beautiful-race-condition.html попробую понять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 12:04 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
questioner, Вот ключевое в статье авторThis is not a bug. HashMap is built specifically for its purpose and this implementation is not intended as threadsafe. There's a gaggle of ways to make it threadsafe, but in plain, vanilla, (and very fast) form - its not. And needless to say, you shouldn't be using it that way. Если бы вам предоставили код и спросили - какие тут могут возникнуть ошибки при многопоточном использовании - это нормальный вопрос. А если вас спросили авторМеня тут спросили, а что будет если использовать обычную хеш мапу? То единственный правильный ответ - недетерменированное поведение, потому что мапа не предназначена для этого. Хотя зная как вы умеете переиначить вопрос, я не уверен что это собеседующие не правы:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 12:54 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
забыл никquestioner, Вот ключевое в статье авторThis is not a bug. Который таки исправили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 12:57 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
забыл никquestioner, Вот ключевое в статье авторThis is not a bug. HashMap is built specifically for its purpose and this implementation is not intended as threadsafe. There's a gaggle of ways to make it threadsafe, but in plain, vanilla, (and very fast) form - its not. And needless to say, you shouldn't be using it that way. Если бы вам предоставили код и спросили - какие тут могут возникнуть ошибки при многопоточном использовании - это нормальный вопрос. А если вас спросили авторМеня тут спросили, а что будет если использовать обычную хеш мапу? То единственный правильный ответ - недетерменированное поведение, потому что мапа не предназначена для этого. Хотя зная как вы умеете переиначить вопрос, я не уверен что это собеседующие не правы:) я не ищу поддержки и понимаю, что человек, который это спрашивал явно больше меня знает и имеет больше опыта. Я всего лишь хочу докапаться до истины. авторкакие тут могут возникнуть ошибки да, был код. одного потока и что вам конкретный код одного потока даст? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 13:20 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
questionerЯ всего лишь хочу докапаться до истины. Первым делом вам надо научиться правильно формулировать вопрос\проблему. Потому что мусор на входе - мусор на выходе. Ваше стремление совершенствоваться похвально, но если искать в неправильном месте - то это Сизифов труд questionerда, был код. одного потока и что вам конкретный код одного потока даст? Вот опять, код не бывает "одного потока", код это просто код. Который можно запустить в многопоточной среде и эмулировать у себя в голове) Вас интересует тема data race? Отлично, есть много примеров в сети, даже приведенный вами - изучайте, прокачивайтесь, если что непонятно - спрашивайте, но слушайте собеседников и не выдавайте свои додумывания за истину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 13:40 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
вот смотрите. когда thread 2 закончился мы видим вот такую картинку: thread1 начнёт исполняться со строки десять. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Дальше я что-то теряю нить рассуждений. что за итерации он показывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 15:29 |
|
||
|
Что будет если использовать HashMap в многопоточной среде?
|
|||
|---|---|---|---|
|
#18+
тут детали, если кто упустил http://mailinator.blogspot.ru/2009/06/beautiful-race-condition.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 15:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39388274&tid=2123240]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 338ms |

| 0 / 0 |
