Saltar al contenido

Cómo Threadpool reutiliza Threads y cómo funciona

Es fundamental comprender el código correctamente antes de aplicarlo a tu trabajo si tquieres aportar algo puedes dejarlo en los comentarios.

Solución:

Si no hay necesidad de crear un nuevo subproceso en el escenario de ThreadPool, entonces, ¿cómo funciona con el mismo subproceso que acaba de terminar su método de ejecución? ¿Se podrá usar de nuevo ese subproceso?

Simple: el hilo original nunca se completa. Simplemente espera a que se ejecute otra tarea. En pseudocódigo:

// No, this isn't even slightly accurate! General impression only :)
while (!pool.isShutdown()) 
    Runnable task = pool.waitForTaskOnQueue();
    task.run();

(Obviamente, cuando se cierra un grupo de subprocesos, también debería dejar de esperar que los subprocesos esperen otra tarea, pero es de esperar que tenga una idea general).

El proceso funciona en dos partes:

Envío de la tarea: los grupos de subprocesos están estrechamente acoplados con una cola de bloqueo. Cuando decimos executor.execute(runnable). El ejecutable/llamable se coloca en la cola.

Ejecución de tareas: ahora las tareas deben recogerse de la cola. Digamos que cada vez que se envía una tarea en la cola, debe ser recogida y ejecutada.

Entonces, hay subprocesos que ejecutarán un bucle infinito y observarán la cola de tareas. Tan pronto como las tareas estén disponibles, un subproceso lo seleccionará y ejecutará.

En el grupo de subprocesos En lugar de crear nuevos subprocesos cuando llegan nuevas tareas, un grupo de subprocesos mantiene una cantidad de subprocesos inactivos que están listos para ejecutar tareas según sea necesario. Después de que un subproceso completa la ejecución de una tarea, no muere. En cambio, permanece inactivo en el grupo a la espera de ser elegido para ejecutar nuevas tareas.

Puede limitar un número definido de subprocesos simultáneos en el grupo, lo que es útil para evitar la sobrecarga. Si todos los subprocesos están ocupados ejecutando tareas, las nuevas tareas se colocan en una cola, esperando que un subproceso esté disponible

Recuerda dar visibilidad a esta división si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *