2016-03-29 5 views
-1

Я не ищу различия между различными структурами данных, такими как HashMap, Collections.synchronizedMap(Map) или HashTable. SO полон таких сообщений.Практические примеры использования ConcurrentHashMap

Я также знаю, что ConcurrentHashMap не будет выбрасывать ConcurrentModificationException для чтения, если другой поток записи изменяет карту.

Что я ищу о практических сценариях, когда поток читателей может позволить себе работать на устаревшие данные?
i.e. позволяет сказать, что thread-1 получает Iterator в момент времени T1 в потоке, а затем в момент времени T2 элемент вставляется для сопоставления другой нитью-нитью-2. ConcurrentHashMap говорит, что в потоке-1 не гарантируется просмотр обновленных данных, поэтому я думаю, что он продолжает повторять устаревшие данные.

Может ли кто-нибудь указать мне на конкретные проблемы, если это можно считать ОК? как в реализации кеша, многопоточных веб-сервисов и т. д. или проблем с вашего собственного практического опыта?

Все проблемы, с которыми я столкнулся, всегда требовали обновленного представления данных, поскольку это была целая цель вставить данные на карту, чтобы читатели могли работать с обновленными данными, в качестве альтернативы, какие были проблемы, когда синхронизированная карта не подходит ?

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

+1

Почему пустые голоса? из-за длинной записи? только пустые голоса и ответов нет? Мой вопрос возник из общего представления о том, что «HashMap» заменяется на «ConcurrentHashMap» в многопоточной среде, а на самом деле они представляют собой совершенно разные варианты использования. Существуют проблемы, при которых 'HashMap' не может быть заменен' ConcurrentHashMap' даже в многопоточной среде, и я не знаю случаев использования для 'ConcurrentHashMap'. –

+1

Вниз голоса иногда имеют эффект лавины. Вместо этого они могли бы проверить свой интеллект, отвечая кому-то, кто в этом нуждается. – user104309

ответ

1

В целом - есть редкие случаи, когда вам не нужны точные данные и в то же время они не могут себе это позволить. Часто цитируемый пример - количество «понравлений» сообщения - никто не заботится о том, что это 2564 или 2565, но «+1» должно быть довольно быстро.

+0

Спасибо, это имеет смысл, так как вы можете показать обновленные симпатии в следующей итерации. –

Смежные вопросы