The requirement to be thread safe has a few implementation implications for manipulators:
For optimal performance, it is a good idea to minimize the time you
hold locks in
processRecord().
Manipulators should not hold locks when calling
OutputChannel.output() from
processRecord(). The call to
output() may take a while to return, which blocks
other threads that are concurrently calling
processRecord(). One way of holding locks is by using
the Java synchronize keyword for a method. However, synchronizing
processRecord() adversely affects performance.
Synchronizing effectively makes the manipulator single threaded by preventing
other threads from entering
processRecord().

