Assinale CORRETAMENTE a função do método thread-yield:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa C está correta.
Tema da questão: A questão aborda o thread-yield, um método relacionado ao gerenciamento de threads em programação, especificamente à forma como uma thread pode ceder o controle da CPU.
Justificativa da Alternativa Correta:
A alternativa C - "Permite que um thread abra mão voluntariamente da CPU para deixar outro thread ser executado." - está correta porque descreve precisamente a função do método thread-yield. Esse método faz com que a thread atual desista voluntariamente do uso da CPU, permitindo que outras threads sejam escalonadas para execução. Isso é útil em situações onde uma thread, por exemplo, está esperando por um recurso ou precisa dar oportunidade a outras threads de menor prioridade.
Análise das Alternativas Incorretas:
A - "Serve para terminar uma rotina e não ser mais escalonada."
Esta alternativa está incorreta porque o método thread-yield não finaliza a execução de uma thread. Ele apenas cede temporariamente o uso da CPU, permitindo que outras threads sejam executadas. Após ceder, a thread pode ser reescalonada posteriormente.
B - "Bloqueia o thread que executou a chamada até que um thread específico tenha terminado."
Esta alternativa está incorreta porque descreve o comportamento do método join(), que faz com que a thread atual espere até que outra thread específica termine sua execução. O thread-yield não realiza bloqueio esperando uma thread específica.
D - "Especifica o nome de uma rotina para o novo thread executar."
Esta alternativa está incorreta porque o método thread-yield não é utilizado para designar rotinas ou definir o comportamento de novas threads. Ele simplesmente permite que uma thread ceda a CPU temporariamente.
Espero que a explicação tenha sido clara. Caso tenha mais dúvidas, sinta-se à vontade para perguntar!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A função geralmente está associada ao conceito de multitarefa cooperativa em programação de threads. Essa função é projetada para permitir que uma thread em execução abra mão voluntariamente do controle do processador, dando oportunidade para outras threads serem executadas.
Quando uma thread chama , ela está indicando ao sistema operacional ou ao ambiente de execução que está disposta a ceder sua fatia de tempo de CPU, dando a chance para outras threads serem executadas. A decisão de qual thread será executada em seguida geralmente depende da implementação do agendador de threads.
O uso de pode ser útil em situações onde você deseja evitar que uma thread monopolize a CPU por muito tempo, garantindo uma distribuição mais justa do tempo de execução entre threads concorrentes. No entanto, é importante notar que a eficácia de pode variar dependendo do ambiente de execução e do sistema operacional, pois nem todos os sistemas oferecem suporte a esse mecanismo ou o implementam da mesma maneira.
c-
As the official documentation suggests, yield() provides a mechanism to inform the “scheduler” that the current thread is willing to relinquish its current use of processor but it’d like to be scheduled back soon as possible.
e.g.:
Runnable r = () -> {
int counter = 0;
while (counter < 5) {
System.out.println(Thread.currentThread()
.getName());
counter++;
Thread.yield();
}
};
new Thread(r).start();
new Thread(r).start();
https://www.baeldung.com/java-thread-yield
no exemplo, uma instancia de Runnable (r) usa uma lambda expression, co um while loop mostrando o nome da thread atal.
como a mesma instancia de Runnable esta sendo usada por 2 threads em new Thread(r).start(), o que faz com que cada thread incremente o counter e faça o "yield", passando a bola para a outra thread
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo