Cómo Threadpool reutiliza los hilos y cómo funciona
Mis conceptos de multihilo son débiles y están tratando de aprender.
En java lo que sé es que no podemos llamar a un hilo más de una vez, es decir,
Thread t = new Thread(//Some Runnable);
t.start()
t.start() //Illegal and throw Exception at Runtime.
Que yo sepa, lanza una excepción cuando llamas a t.start () otra vez porque la pila asociada para el Hilo se destruye una vez que sale derun()
Método y estás intentando inicializar las cosas de nuevo.
En ese caso, lo que sé de Threadpool es que ofrece un mejor rendimiento y ahorra tiempo porque no es necesario crear un nuevo subproceso. (Leí enhttp://www.javatpoint.com/thread-pooling-in-java)
Si no hay necesidad de crear un nuevo Thread en ThreadPool, entonces, ¿cómo funciona con el mismo thread que acaba de terminar su método de ejecución, ese Thread se podrá usar nuevamente?
Leo esto,http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html y dice que "La mayoría de las implementaciones de ejecutor en java.util.concurrent utilizan grupos de subprocesos, que consisten en subprocesos de trabajo. Este tipo de subproceso existe por separado de las tareas ejecutables y recuperables que ejecuta y se utiliza a menudo para ejecutar múltiples tareas."
Entonces, ¿qué es el subproceso de trabajo aquí, es algo diferente de los subprocesos de Java normales?
con este enlaceCómo un grupo de subprocesos en caché reutiliza subprocesos existentes Tengo algo, pero todavía estoy confundido sobre qué tipo de cosas se pueden eliminar cuando usamos Thread Pool y cuál da un mejor rendimiento que el uso de Java Thread normal.
Así que podemos decir así,
El hilo tiene tres partes,
Creación (indicando al sistema operativo que es un nuevo subproceso, crea una pila para él).Ejecutar el método Runnable es decir, ejecutar ().Destruyendo hilos.Por lo tanto, considerando los 3 pasos anteriores, con Threadpool el paso 1 y el paso 3 se pueden eliminar después de un número fijo de Thread Creation. solo se ejecutará el paso 2 para cada tarea, por eso Threadpool es más rápido. podemos decir así? ¿Estoy en lo correcto?