Как я могу убедиться, что запись происходит перед тем, как читать в concurrenthashmap в одно и то же время другим потоком в одном сегменте и на одном и том же ключе? - PullRequest
0 голосов
/ 27 сентября 2019

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

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

Я могу подумать об использовании wait / notify, присоединиться для использования здесь перед любой операцией, но я не уверен в этом.

1 Ответ

0 голосов
/ 27 сентября 2019

Мы все знаем, как работает параллельный hashmap, если нет, здесь: ConcurrentHashmap одновременных операций записи и получения

В соответствии с этой статьей Concurrent hasmap уже имеет эту функцию, пожалуйста, обратитесь к пункту ниже иОперация чтения-записи по ссылке: - Два потока могут одновременно считывать и записывать данные в разных сегментах, не блокируя друг друга.Как правило, операции извлечения не блокируются, поэтому могут перекрываться с операциями записи (установки / удаления).Последнее обновленное значение будет возвращено операцией get, а последнее обновленное значение - операцией записи (в том числе put / remove)

https://medium.com/@itsromiljain/curious-case-of-concurrenthashmap-90249632d335

PS: я не пробовал, обновите меняесли вышеупомянутая статья (любопытный случай) упоминается неправильно.

...