martes, 22 de abril de 2014

GRUPOS DE THREADS

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