Olá, tenho uma dúvida sobre quando utilizar o método yeld em uma thread.
Obrigado pela ajuda. 
Dúvida sobre Thread
7 Respostas
este método serve para que a Thread corrente “ceda” o processamento para outras Threads

Só acrescentando, ele “cede” a vez para outra Thread que possua a mesma prioridade da Thread corrente.
A Thread corrente então, passa do estado de Running para Runnable.
Porém, não existe garantia de que a JVM irá eleger outra Thread. Pode ser a mesma seja eleita novamente.
Confuso? Sim!
Oi. Dá uma olhada nesse link abaixo. Ele fala pra que serve o método yield() da classe Thread.
qdo vc querer que todas as threads com a mesma prioridade sejam executada… o metodo yield() q vc quis dizer!! :D. Porém lembrando que nada é garantido quando se fala de threads!!
flw!
Marcio,
o que o método faz acho que você pegou, talvez a questão seja “quando utilizar o método”.
A questão sobre prioridades das threads é quase secundária nesse ponto, principalmente no Windows em que não funciona muito bem…
Pois bem, a questão é para quê você tem usado as threads, quando se utiliza em aplicações swing por exemplo, normalmente você terá a thread principal e uma secundária (que faz o papel dos actionlistener) ou várias se você não seguir as boas práticas de programação.
Em fim, neste contexto, o uso de yield seria recomendado quando você quiser fazer algum processamento e manter a parte de desenho mais “atualizada” (menos congelada). Só que cuidado, a maior parte das threads listener tem prioridade menor que a thread principal.
No meu caso, a situação que melhor apresentou ganho de desempenho, foi quando eu utilizei várias threads processando um algoritmo genético (cada thread era uma família de soluções e de tempo em tempo eles trocavam as soluções). A idéia era “favorecer” a troca de execução, mas não exigir… nos duo-core tem dado bons resultados também nos algoritmos gulosos. Tais como: identificação de contorno em imagem, avaliações em gerais etc.
Vai depender muito do contexto, eu estou escrevendo uma aplicação que fica sincronizando um cache com o disco, neste caso, a cada iteração da thread de sincronia eu invoco o yield.
espero que te ajude.
fw
Somente lembrando que Java nao eh uma plataforma para aplicacoes de tempo real e a chamada do yield nao dá garantia de funcionar sempre, dependo muito do seu SO, virtual machine e de aplicacao.
com thread nunca há garantias, podemos apenas influenciar na execucão! 