Thread: Notificado o objeto errado …

No código abaixo, é interessante observarmos que a thread “A” ao ser inicializada imprime “A wait” e depois entra em espera por 10 segundos. Na thread main, notificamos as threads que estão na lista de espera da classe Teste (monitor Teste) porém não há nenhuma thread em espera neste objeto, e sim no objeto “a”.

 
 

import java.lang.Thread;

 
 

public class Teste {

public static void main(String[] args){

A a = new A();

a.start();

try {

Thread.sleep(2000);

} catch (InterruptedException e){}

synchronized(Teste.class){Teste.class.notify();}
// Thread “main” em execução

}                

}

 
 

class A extends Thread{

{this.setName(“A”);}

public void run(){

try {

System.out.println(Thread.currentThread().getName() + ” wait”);

synchronized(this){wait(10000);}
// Thread “A” em execução

System.out.println(Thread.currentThread().getName() + ” run”);

}catch(InterruptedException e){}

}

}

Output:

A wait

{após 10 segundos}

A run

 
 

 
 

 
 

 
 

Anúncios
Esta entrada foi publicada em Threads com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s