Assinale CORRETAMENTE a função do método thread-yield:

Próximas questões
Com base no mesmo assunto
Q2299256 Programação
Assinale CORRETAMENTE a função do método thread-yield:
Alternativas

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