2 - Prioridades de Threads

Toda thread do java tem uma prioridade que ajuda a determinar a ordem em que as mesmas serão agendadas. As prioridades do Java variam entre MIN_PRIORITY (uma constante de valor 1) até MAX_PRIORITY (uma constante de valor 10). Por padrão, toda thread criada recebe a prioridade NORM_PRIORITY (uma constante de valor 5).

Cada nova thread herda a prioridade da thread que a cria. Informalmente, as threads de prioridade mais alta são mais importantes para um programa e devem ser alocadas em tempo de CPU antes das threads de prioridade mais baixa. Entretanto, as prioridades de threads não podem garantir a ordem em que elas serão executadas.

A maioria dos sistemas operacionais suporta o fracionamento de tempo (timesharing), o que permite que as threads de igual prioridade compartilhem um processador. Sem o fracionamento de tempo, cada thread em um conjunto de threads de igual prioridade executa até a sua conclusão (a menos que ela deixe o estado executável e transite para o estado de espera ou espera cronometrada ou, ainda, seja interrompida por uma thread de prioridade mais alta) antes de outras threads de igual prioridade terem uma chance de executar.

Com o timesharing, mesmo se a thread não tiver concluído a execução quando seu quantum expirar, o processador é tirado da thread e recebe outra thread de igual prioridade, se houver alguma disponível. O escalonador de um sistema operacional determina que thread execute em seguida.
Copyright © 2016 AIEC.