De la documentación del código fuente de ThreadPoolExecutor
/*
* <p>Thread pools address two different problems: they usually
* provide improved performance when executing large numbers of
* asynchronous tasks, due to reduced per-task invocation overhead,
* and they provide a means of bounding and managing the resources,
* including threads, consumed when executing a collection of tasks.
* Each {@code ThreadPoolExecutor} also maintains some basic
* statistics, such as the number of completed tasks.
*
* <p>To be useful across a wide range of contexts, this class
* provides many adjustable parameters and extensibility
* hooks. However, programmers are urged to use the more convenient
* {@link Executors} factory methods {@link
* Executors#newCachedThreadPool} (unbounded thread pool, with
* automatic thread reclamation), {@link Executors#newFixedThreadPool}
* (fixed size thread pool) and {@link
* Executors#newSingleThreadExecutor} (single background thread), that
* preconfigure settings for the most common usage
* scenarios.
*/
ThreadPoolExecutor
es una manera de lograr la concurrencia. Hay muchas maneras de lograr concurrencia:
Executors marco proporciona diferentes API. Algunas de las API importantes se enumeran a continuación.
static ExecutorService newFixedThreadPool(int nThreads)
Crea un grupo de subprocesos que se vuelve a utilizar un número fijo de hilos que operan frente a una cola sin límites compartido.
static ExecutorService newCachedThreadPool()
Crea un grupo de subprocesos que crea nuevos temas, según sea necesario, pero volverá a utilizar hilos ya construidos cuando están disponibles.
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
Crea un grupo de subprocesos que se pueden programar los comandos a ejecutar después de un retraso dado, o para ejecutar periódicamente.
static ExecutorService newWorkStealingPool()
Crea un grupo de subprocesos robar el trabajo a utilizar todos los procesadores disponibles como su nivel de paralelismo objetivo.
Tener un vistazo a continuación preguntas SE:
java Fork/Join pool, ExecutorService and CountDownLatch
How to properly use Java Executor?
Ese es mi entendimiento también. Utilice ThreadPoolExecutor para hilos ** independientes ** y enfoque Multithread para ** divide/conquista ** – gtgaxiola