Todo hilo de Java debe formar parte de un grupo
de hilos (ThreadGroup). Puede pertenecer al grupo
por defecto o a uno explícitamente creado por el
usuario. Los grupos de threads proporcionan una
fonna sencilla de manejar múltiples threads como
un solo objeto. Así. por ejemplo es posible parar
varios threads con una sola llamada al método
correspondiente. Una vez que un thread ha sido
asociado a un threadgroup. no puede cambiar de
grupo.
Cuando se arranca mi programa, el sistema
crea un ThreadGroup llamado main. Si en la
creación de un nuevo thread no se especifica a qué
grupo pertenece, automáticamente pasa a pertenecer al threadgroup del thread desde el que ha sido
creado (conocido como current thread group y current thread. respectivamente). Si en dicho
programa no se crea ningún ThreadGroup adicional, todos los threads creados pertenecerán al
grupo main (en este grupo se encuentra el método mainff). La Figura 6.3 presenta una posible
distribución de threads distribuidos en grupos de threads.
Para conseguir que un thread pertenezca a un grupo concreto, hay que indicarlo al crear el
nuevo thread. según uno de los siguientes constructores:
public Thread (ThreadGroup grupo, Runnable destino)
public Thread (ThreadGroup grupo, String
nombre)
public Thread (ThreadGroup grupo, Runnable
destino, String nombre)
A su vez. un ThreadGroup debe pertenecer a otro ThreadGroup. Como ocurría en el caso
anterior, si no se especifica ninguno, el nuevo grupo pertenecerá al ThreadGroup desde el que ha
sido creado (por defecto al grupo main).
La clase ThreadGroup tiene dos posibles constructores:
ThreadGroup(ThreadGroup parent, String nombre);
ThreadGroup(String ñame);
el segundo de los cuales toma como parent el threadgroup al cual pertenezca el thread desde el que
se crea (Thread.currentThreadQ). Para más información acerca de estos constructores, dirigirse a la
documentación del API de Java donde aparecen numerosos métodos para trabajar con grupos de
threads a disposición del usuario (getMaxPriority(). setMaxPriority(). getName(). getParentf),
parentOfO).
En la práctica los ThreadGroups no se suelen utilizar demasiado.
Su uso práctico se limita a
efectuar determinadas operaciones de fonna más simple que de fonna individual. En cualquier caso,
véase el siguiente ejemplo:
ThreadGroup miThreadGroup = new ThreadGroup("Mi Grupo de Threads");
Thread miThread = new Thread(miThreadGroup, "un thread para mi grupo");
donde se crea un grupo de threads (miThreadGroup) y un thread que pertenece a dicho grupo
(miThread).
No hay comentarios:
Publicar un comentario