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.