Implementación Básica de Pool de Hilos

Parece que hasta Java 5 nadie necesitó nunca una implementación sencilla de un Pool de Hilos (no como en .Net que la tienen desde su primera versión http://msdn.microsoft.com/es-es/library/system.threading.threadpool(VS.80).aspx). Podéis leer algo más sobre esto aquí.

El Pool de Hilos permite crear un conjunto de hilos que se van procesando dentro de una cola conforme se van completando los anteriores, de esta forma por ejemplo puedo asignar 100 trabajos a una cola de 10 de modo que cada vez que se libera uno va procesando el siguiente.

Así que os paso unas clasecillas que implementan este patrón Thread Pool y que encontré/adapté hace muchoooos años y que cada X meses recupero para reutilizarlas.

Su uso es muy sencillo:

1. Tenemos 3 clases core:

· ThreadPool à representa un

· WorkerThread à representa el Worker

· Done

2. Implementamos una clase Worker que implemente el interfaz Runnable. Esta será la clase/clases que realicen la labor. En el ejemplo el Worker simplemente simula un proceso haciendo un sleep un tiempo:

3. Desde cualquier clase creamos el ThreadPool con un número de hilos y le asignamos los Workers. En el ejemplo se crea un pool que permite lanzar 10 hilos simultáneos y se le asignan 25 Workers.

Espero que os sea de utilidad…yo le he dado mucho uso a lo largo de los años 🙂

Los fuentes

Respuestas

  1. Eso es porque la primera versión de .Net es contemporánea con Java 5.

    El paquete util.concurrent que se incorporó a la API oficial de Java en la versión 5 estaba disponible desde bastante tiempo antes como software libre para su uso en los proyectos de quien lo quisiera usar. Su propio creador fue contactado por Sun como experto en el área y él adaptó su solución a Java 5 (agregándole uso de generics que no tenía).

  2. […] 2 Agosto 2010 — Luis Miguel Gracia Luis Hace unos meses publicamos un post sobre un Pool de Hilos hecho a medida y me quedó pendiente publicar el soporte que da Java para el Pool de […]

Replica a Pool de Hilos con el Framework Executor « Java Mania Cancelar la respuesta