Yield

Saiu hoje uma questão no examulator, mas a página de resposta está com bug, qual a resposta correta?

Under what circumstances might you use the yield method of the Thread class

1 To call from the currently running thread to allow another thread of the same or higher priority to run
2 To call on a waiting thread to allow it to run
3 To allow a thread of higher priority to run
4 To call from the currently running thread with a parameter designating which thread should be allowed to run

Imagino que seja a número 3, a 1 não é correta porque yield é um método estático da classe Thread e portanto o termo “from the currently running thread” não se aplica.

é isso mesmo?

Não … a resposta correta é a 1 mesmo.

Apesar de ser estático o método sabe em qual Thread esta sendo chamado para funcionar.
O Sleep() também é estático e deixa o Thread que o chama dormindo :slight_smile:

Ao chamar yeild() a JVM vai verificar se tem outras threads de mesma prioridade ou maior prontas pra rodar …

[]s

ok, e com relação às prioridades, yield permite que outro Thread de mesma prioridade rode ou apenas Threads de prioridade maior?

Não dá pra saber qual thread será chamada pois o schedule depende do sistema operacional ( depende da plataforma) !

:slight_smile:

Não dá para saber qual thread será chamada, mas com certeza ela terá prioridade igual ou superior a thread corrente.

[quote=“dreamspeaker”]
Não dá para saber qual thread será chamada, mas com certeza ela terá prioridade igual ou superior a thread corrente.[/quote]

ok, entendido, igual ou superior