com.hazelcast.map
Interface EntryProcessor<K,V>

Type Parameters:
K - Type of key of a Map.Entry
V - Type of value of a Map.Entry
All Superinterfaces:
Serializable
All Known Implementing Classes:
AbstractEntryProcessor, AbstractWebDataEntryProcessor, AddSessionEntryProcessor, DestroySessionEntryProcessor, InvalidateSessionAttributesEntryProcessor, ReferenceSessionEntryProcessor

public interface EntryProcessor<K,V>
extends Serializable

An EntryProcessor passes you a Map.Entry. At the time you receive it the entry is locked and not released until the EntryProcessor completes. This obviates the need to explicitly lock as would be required with a ExecutorService.

Performance can be very high as the data is not moved off the Member partition. This avoids network cost and, if the storage format is InMemoryFormat.OBJECT then there is no de-serialization or serialization cost.

EntryProcessors execute on the partition thread in a member. Multiple operations on the same partition are queued.

While executing partition migrations are not allowed. Any migrations are queued on the partition thread.

An EntryProcessor may not be re-entrant i.e. it may not access the same Map. Limitation: you can only access data on the same partition.

Note that to modify an entry by using EntryProcessors you should explicitly call Map.Entry.setValue(V) method of Map.Entry such as:

 
 Override
     public Object process(Map.Entry entry) {
        Value value = entry.getValue();
        // process and modify value
        // ...
        entry.setValue(value);
        return result;
    }
 
 
otherwise EntryProcessor does not guarantee to modify the entry.

See Also:
AbstractEntryProcessor

Method Summary
 EntryBackupProcessor<K,V> getBackupProcessor()
          Get the entry processor to be applied to backup entries.
 Object process(Map.Entry<K,V> entry)
          Process the entry without worrying about concurrency.
 

Method Detail

process

Object process(Map.Entry<K,V> entry)
Process the entry without worrying about concurrency.

Note that to modify an entry by using EntryProcessor you should explicitly call Map.Entry.setValue(V) method of Map.Entry such as:

 
 Override
        public Object process(Map.Entry entry) {
          Value value = entry.getValue();
          // process and modify value
          // ...
          entry.setValue(value);
          return result;
        }
 
 
otherwise EntryProcessor does not guarantee to modify the entry.

Parameters:
entry - entry to be processed
Returns:
result of the process

getBackupProcessor

EntryBackupProcessor<K,V> getBackupProcessor()
Get the entry processor to be applied to backup entries.

Returns:
back up processor


Copyright © 2015 Hazelcast, Inc.. All Rights Reserved.