Você está aqui: Java ::: Dicas & Truques ::: Threads |
Como usar o método yield() para parar a thread atual e ceder a CPU para outras threadsQuantidade de visualizações: 13306 vezes |
|
Quando uma thread está sendo executada ela pode se oferecer para se mover para fora da CPU virtual e ceder seu tempo de execução para outras threads. Isso é feito com uma chamada ao método estático yield() da classe Thread. Quando este método é chamado, a thread atual é movida do estado "executando" para o estado "pronta". Desta forma, o gerenciador de threads pode iniciar a execução das demais threads disputando o tempo da CPU. Veja um exemplo: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
// criamos uma classe que servirá como thread
class MinhaThread implements Runnable{
private String nome;
public MinhaThread(String nome){
this.nome = nome;
}
public void run(){
for(int i = 1; i <= 20; i++){
System.out.println(nome + ": " + i);
if((i % 3 == 0) && (nome.equals("Thread 1"))){
System.out.println(nome + " foi descansar um pouco");
Thread.yield(); // cede o tempo de CPU para as demais threads
}
}
}
}
public class Estudos{
public static void main(String[] args){
// vamos criar duas threads
MinhaThread mt1 = new MinhaThread("Thread 1");
Thread t1 = new Thread(mt1);
t1.start();
MinhaThread mt2 = new MinhaThread("Thread 2");
Thread t2 = new Thread(mt2);
t2.start();
}
}
Ao executar este código você perceberá que a primeira thread cede o tempo da CPU, ou seja, se oferece para ser movida para fora da CPU virtual, a cada três valores impressos. Quando isso acontece a segunda thread é movida do estado "pronta" para o estado "executando". Note, contudo, que não há comportamente previsível em relação a uma thread ceder o tempo de execução para outra. É preciso, antes de tudo, nos inteirarmos da forma pela qual o gerenciador de threads escolhe qual a próxima thread a ser executada, se há considerações em relações à prioridades das threads, etc. Pode ainda acontecer de uma thread ceder seu tempo de execução e continuar executando, talvez pela ausência de outras threads no estado "prontas". |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
|
JavaScript - Formulários HTML - Como marcar ou desmarcar todas as checkboxes de um formulário HTML de uma só vez usando JavaScript Portugol - Como resolver uma equação do segundo grau em Portugol - Como calcular Bhaskara em Portugol |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






