I have a few questions regarding the order of processing when using

From the LinkedIn article here
mentions the following:
"For parallelism within a task, Samza guarantees processAsync will be
invoked in order for a task. The processing or completion, however, can go
out of order. With this guarantee, users can implement sub-task-level data
pipelining with customized ordering and parallelism. For example, users can
use a keyed single thread executor pool to have in-order processing per key
while processing messages with different keys in parallel."

1. What exactly is meant by a "keyed single thread executor pool"? Are
there any code examples available on what this looks like?
2. I need to process a stream keyed on user IDs in parallel using
processAsync but would like each user's event be processed in order. Does
this then require custom ordering logic mentioned in the article?

Xiaochuan Yu