When interacting with Hazelcast's distributed collections, we set and retrieve data in a consistent and atomic way. In that when we modify an entry, it is immediately available on other nodes irrespective of their processing state. This does mean that we have to be careful when developing our applications, as data may change underneath us while performing an operation. However, it is this default lockless nature that significantly increases application scalability, especially under load. Two of the collections we have previously looked at additionally implement specific atomic capabilities provided by the java.util.concurrent
interfaces.
As we've previously seen, the distributed map collection provided by Hazelcast is defined by its own IMap
class. This actually extends ConcurrentMap
, which will provide us with additional atomic operations such as putIfAbsent(key, value)
and replace(key, oldValue, newValue)
. These capabilities may go some way to prevent any concurrent modification...