Give Good Names for Your Threads
When configuring executors in multithreaded application, do not forget to assign names to your threads. It simplifies later profiling a lot, when you see a meaningful thread names in your profiler.
For example, you may use CustomizableThreadFactory
from SpringFramework for that.