J2EE specification says its not advisable to create or spawn user defined threads into application logic. The reason as i understood is to avoid resource contention, synchronization issues and memory leaks.
But it also suggest to use ManagedExecutorService or WorkManager API implementation. Both of these implementations also spawns threads under the hood.
Then how it is appropriate to use these API's and not using Threads directly ?