Logo Grupo Codesi

Prioridades de los Threads

Grupos y distribución de las prioridades de los Threads

prioridades threads java

Hay mucho de que hablar acerca del tema de los hilos en Java, esperamos que este artículo sea el último o de los últimos siempre y cuando no encontremos más información importante que podamos compartir.
Con el fin de conseguir una correcta ejecución de un programa se establecen prioridades de los threads, de forma que se produzca un reparto más eficiente de los recursos disponibles. Así, en un determinado momento, interesará que un determinado proceso acabe lo antes posible sus cálculos, de forma que habrá que otorgarle más recursos (más tiempo de CPU). Esto no significa que el resto de procesos no requieran tiempo de CPU, sino que necesitarán menos. Cuando se crea un nuevo thread, éste hereda la prioridad del thread desde el que ha sido inicializado. Las prioridades de los threads viene definidas por variables miembro de la clase Thread, que toman valores enteros que oscilan entre la máxima prioridad MAX_PRIORITY (normalmente tiene el valor 10) y la mínima prioridad MIN_PRIORITY (valor 1), siendo la prioridad por defecto NORM_PRIORITY (valor 5). Para modificar la prioridad de un thread se utiliza el método setPriority() y se obtiene su valor con getPriority(). Para conocer utilizar estas prioridades de los hilos dejamos este curso de java presencial y 100% práctico.

threads java

Distribución de prioridades

El algoritmo de distribución de recursos en Java escoge por norma general aquel thread que tiene una prioridad mayor, aunque no siempre ocurra así, para evitar que algunos procesos queden “dormidos”. Cuando hay dos o más threads de la misma prioridad (y además, dicha prioridad es la más elevada), el sistema no establecerá prioridades entre los mismos, y los ejecutará alternativamente dependiendo del sistema operativo en el que esté siendo ejecutado. Un thread puede en un determinado momento renunciar a su tiempo de CPU y otorgárselo a otro thread de la misma prioridad, mediante el método yield(), aunque en ningún caso a un thread de prioridad inferior.

theads en grupos

Grupos de Threads

Otro tema importante son los grupos de threads, es por ello que 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 roporcionan una forma 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.

ThreadGroup main

ThreadGroup main

Cuando se arranca un 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 main()). 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). Para manipular threads y sus prioridades dejamos este curso de java donde podrás aprender y utilizar practicamente estos conceptos

Articulos Relacionados a la tecnología Java

Seguridad de Java Java para Android Applets Java Juegos en Java Web Services Java Servidor Java Java 8 Fundamentos de Java 8 Java Applets Comunicacion Applets Browser Carga de Applets
Diplomado Java

Diseño de paginas Web Grupo Codesi