Метод ввода Hazelcast IMap получает блокировку на ведро, раздел или ключ? - PullRequest
0 голосов
/ 25 сентября 2018

Метод Hazelcast IMap put блокирует ведро, раздел или ключ?java.util.concurrent.ConcurrentHashMap Метод put получает блокировку на ведро и записывает на карту.
Принимая во внимание, что в Hazelcast IMap, который представляет собой реализацию распределенной карты java.util.concurrent.ConcurrentHashMap, когда один узел Hazelcast выполняет следующий код.
imap.put(key, value);
захватывает ли он ведро, раздел или ключ?Просьба уточнить?Я не вижу ответа на этот вопрос в документации Hazelcast.

1 Ответ

0 голосов
/ 25 сентября 2018

IMap.put не получает никакой блокировки.Каждый член Hazelcast имеет определенный набор разделов, которые обрабатываются несколькими потоками разделов.Каждый поток разделов имеет определенное количество разделов.Поэтому, когда операция записи прибывает в элемент кластера, он выбирается потоком раздела, которому принадлежит раздел, который будет хостом объекта Entry в этой операции записи.

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

Однако можно получить блокировки ключей с помощью IMap API.

Подробнее о модели потоков Hazelcast см. Здесь: https://docs.hazelcast.org/docs/3.10.5/manual/html-single/index.html#threading-model

...