You are correct, per-lookup
means that a new instance is created for every lookup from plexus. Each execution results in a lookup, so yes, for every execution a new instance is created.
It is thus the safest way to prevent multithreading issues.
However, you could still create multithreading issues by using non-final static fields.
So, use per-lookup
and don't use static variables, and you are safe.