Prioridades de discussão - 1

"Vamos continuar nossa lição. Quais são as prioridades de encadeamento e por que elas são necessárias?

"Em problemas do mundo real, a importância do trabalho executado por diferentes threads pode variar muito. O conceito de prioridade de thread foi criado para controlar esse processo. Cada thread tem uma prioridade representada por um número de 1 a 10."

"10 é a prioridade mais alta."

"1 é o mais baixo."

"Se nenhuma prioridade for dada, então um thread terá prioridade 5 (normal)."

A prioridade de um thread não afeta significativamente seu trabalho, mas é mais uma recomendação. Se houver vários encadeamentos adormecidos que precisam ser executados, a máquina Java iniciará um encadeamento com prioridade mais alta primeiro.

"A máquina Java gerencia as threads como bem entende. As threads com baixa prioridade não serão deixadas ociosas. Elas simplesmente receberão menos tempo de execução do que outras, mas ainda assim serão executadas."

"Na maioria dos casos, as threads são sempre executadas com a mesma prioridade. Uma tentativa de dar mais prioridade a uma thread do que a outras geralmente é uma indicação de problemas de arquitetura em um programa."

"Uau. E eu já tinha sonhado em atribuir a maior prioridade aos meus threads para que eles fizessem 10 vezes mais."

"Acontece que a situação aqui está perto de terminar: um thread com alta prioridade pode e vai funcionar mais, mas talvez não - não há garantia."

"Diga, como altero a prioridade de um thread?"

"É muito fácil. A classe Thread tem dois métodos:"

Método Descrição
void setPriority(int newPriority)
Define uma nova prioridade
int getPriority()
Retorna a prioridade do thread atual

"A classe Thread também possui três constantes:"

public final static int MIN_PRIORITY = 1;

public final static int NORM_PRIORITY = 5;

public final static int MAX_PRIORITY = 10;

"Deixe-me adivinhar. MIN_PRIORITY é a prioridade mínima, MAX_PRIORITY é a máxima e NORM_PRIORITY é a prioridade padrão?"

"Sim, exatamente. Você pode escrever o código que atribui a maior prioridade de thread."

"Existe algum truque aqui? Algo assim?"

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

"Está correto. Nada complicado, certo?"

"Sim. Você pode definir/alterar a prioridade após o início de um thread? Ou é como setDaemon, onde você deve definir o valor antes que o thread seja iniciado?"

"A prioridade pode ser alterada depois que um thread é iniciado. Como eu já disse, isso não resulta em mudanças drásticas."

"Bem, esse foi um tópico pequeno, mas interessante. Obrigado, Ellie."