Threads de Control

Cada thread de Java es miembro de un grupo de threads. Los grupos proporcionan un mecanismo para la colecci�n de varios threads dentro de un s�lo objeto y la manipulaci�n de esos threads de una vez, mejor que de forma individual. Por ejemplo, se puede arrancar o suspender todos los threads de un grupo con una s�la llamada a un m�todo. Los grupos de threads de Java est�n implementados por la clase ThreadGroup del paquete java.lang.

El sistema de ejecuci�n pone un thread dentro de un grupo durante su construcci�n. Cuando se crea un thread, tambi�n se puede permitir que el sistema de ejecuci�n ponga el nuevo thread en alg�n grupo por defecto razonable o se puede especificar explicitamente el grupo del nuevo thread. El thread es un miembro permanente del grupo al que se uni� durante su creacci�n -- no se puede mover un thread a otro grupo despu�s de haber sido creado.

.�El Grupo de Threads por Defecto

Si se crea un nuevo Thread sin especificar su grupo en el constructor, el sistema de ejecuci�n autom�ticamente sit�a el nuevo thread en el mismo grupo que del thread que lo cre� (conocido como el grupo de threads actual y el thread actual, respectivamente).

Entonces, si se deja sin especificar el grupo de threads cuando se crea un thread, �qu� grupo contiene el thread?

Cuando se arranca por primera vez una aplicaci�n Java, el sistema de ejecuci�n crea un ThreadGroup llamado "main". Entonces, a menos que se especifique otra cosa, todos los nuevos threads que se creen se convierten en miembros del grupo de threads "main".

Nota:

Si se crea un thread dentro de un applet, el grupo del nuevo thread podr�a ser distinto de "main" -- depende del navegador o del visualizador donde se est� ejecutando al applet. Puedes referirse a Threads en Applets para obtener m�s informaci�n sobre los grupos de threads en los applets.

Muchos programadores java ignoran por completo los grupos de threads y permiten al sistema de ejecuci�n que maneje todos lo detalles con respecto a los grupos de threads. Sin embargo, si tu programa crea muchos threads que deben ser manipulados como un grupo, o si est�s implementando un Controlador de Seguridad de cliente, probablemente querr�s m�s control sobre los grupos de threads. Contin�e leyendo para m�s detalles!

.�Crear un Thread en un Grupo Espec�fico

Como se mencion� anteriormente, un thread es un miembro permanente del grupo al que se uni� cuando fue creado -- no se puede mover un thread a otro grupo despues de haber sido creado.

As�, si se desea poner si nuevo thread en un grupo distinto al de defecto, se debe especificar expl�citamente el grupo en que crear el thrread. La clase Thread tiene tres constructores que permiten seleccionar un nuevo grupo de threads.

public Thread(ThreadGroup grupo, Runnable fuente)
public Thread(ThreadGroup grupo, String nombre)
public Thread(ThreadGroup grupo, Runnable fuente, String nombre)

Cada uno de estos constructores crea un nuevo thread, lo inicializa basandose en los par�metros Runnable y String, y lo hace miembro del grupo especificado. Por ejemplo, el siguiente ejemplo crea un grupo de threads (miGrupoDeThread) y luego crea un thread (miThread) en ese grupo.

ThreadGroup miGrupoDeThread = new ThreadGroup("Mi Grupo de Threads");
Thread miThread = new Thread(miGrupoDeThread, "un thread de mi grupo");

El ThreadGroup pasado al constructor del Thread no tiene que ser necesariamente un grupo que hayas creado -- puede ser un grupo creado por el sistema de ejecuci�n Java, o un grupo creado por la aplicaci�n donde se est� ejecutando el applet.

.�Obtener el Grupo de un Thread

Para encontrar el grupo en el que est� un thread, puede llamar a su m�todo getThreadGroup().

theGroup = miThread.getThreadGroup();

.La Clase ThreadGroup

Una vez que obtenido el Grupo de un thread, puedes pedir m�s informaci�n sobre el grupo, como cu�ntos threads m�s hay en el grupo. Tambi�n se pueden modificar todos los threads del grupo (como suspenderlos, pararlos, etc...) con una sola llamada a un m�todo.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO