Чтение изменяемых объектов в ConcurrentHashMapJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Чтение изменяемых объектов в ConcurrentHashMap

Сообщение Anonymous »

Согласно документации JavaSE 8 по ConcurrentHashMap

... несмотря на то, что все операции являются поточно-ориентированными, операции извлечения не влечет за собой блокировку....

Как вышеизложенное связано с функцией вычисления ConcurrentHashMap ? Рассмотрим следующий простой объект

Код: Выделить всё

final class PlainObject{
int a;
int b;
}
Рассмотрим следующее сопоставление

Код: Выделить всё

ConcurrentHashMap myMap;
Рассмотрим следующую функцию, имеющую доступ к myMap

Код: Выделить всё

void act(){

myMap.compute("abc", (k, v) -> {
v.a = 21;
// Other work
v.b = 18;

return v;
});
}
Могу ли я когда-либо выполнить чтение myMap, которое выведет частичный результат (т. е. был изменен только )? Кажется, ответ — да, потому что получение данных не влечет за собой блокировку, и мы имеем дело с изменяемым объектом. Верен ли этот вывод?

Подробнее здесь: https://stackoverflow.com/questions/772 ... enthashmap
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»