Prioridades de hilos - 1

"Continuemos con nuestra lección. ¿Qué son las prioridades de subprocesos y por qué son necesarias?

"En los problemas del mundo real, la importancia del trabajo realizado por diferentes subprocesos puede variar mucho. El concepto de prioridad de subprocesos se creó para controlar este proceso. Cada subproceso tiene una prioridad representada por un número del 1 al 10".

"10 es la máxima prioridad".

"1 es el más bajo".

"Si no se da prioridad, entonces un subproceso obtiene prioridad 5 (normal)".

La prioridad de un hilo no afecta significativamente su trabajo, sino que es más una recomendación. Si hay varios subprocesos inactivos que deben ejecutarse, la máquina Java iniciará primero un subproceso con una prioridad más alta.

"La máquina Java administra los subprocesos como mejor le parezca. Los subprocesos con baja prioridad no se dejarán inactivos. Simplemente recibirán menos tiempo de ejecución que otros, pero aun así se ejecutarán".

"En la mayoría de los casos, los subprocesos siempre se ejecutan con la misma prioridad. Un intento de dar a un subproceso más que a otros suele ser una indicación de problemas de arquitectura en un programa".

"Vaya. Y ya había soñado con asignar la prioridad más alta a mis hilos para que hicieran 10 veces más".

"Resulta que la situación aquí está cerca de finalizar: un hilo con una prioridad alta puede funcionar y funcionará más, pero tal vez no, no hay garantía".

"Dime, ¿cómo cambio la prioridad de un hilo?"

"Es muy fácil. La clase Thread tiene dos métodos:"

Método Descripción
void setPriority(int newPriority)
Establece una nueva prioridad
int getPriority()
Devuelve la prioridad del hilo actual

"La clase Thread también tiene tres constantes:"

public final static int MIN_PRIORITY = 1;

public final static int NORM_PRIORITY = 5;

public final static int MAX_PRIORITY = 10;

"Déjame adivinar. MIN_PRIORITY es la prioridad mínima, MAX_PRIORITY es la máxima y NORM_PRIORITY es la prioridad predeterminada".

"Sí, exactamente. Puedes escribir el código que asigna la prioridad más alta al subproceso".

"¿Hay algún truco aquí? ¿Algo como esto?"

Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();

"Eso es correcto. Nada complicado, ¿verdad?"

"Sí. ¿Puedes establecer/cambiar la prioridad después de que se inicia un hilo? ¿O es como setDaemon, donde tienes que establecer el valor antes de que se inicie el hilo?"

"La prioridad se puede cambiar después de que se inicia un hilo. Como ya dije, esto no da como resultado ningún cambio dramático".

"Bueno, ese fue un tema pequeño pero interesante. Gracias, Ellie".