Duvida em bloqueio de Thread

0 respostas
G

Bom dia pessoal, estou com uma duvida em relação a um tipo de boqueio, quando utilizo desta forma:

synchronized(Nome.class)
{
}

O que eu estou bloqueando?

E por que esse codigo não funciona?

public class TesteThread {
	static Boolean teste = false;
	public static void main(String[] args) {
		Thread1 thread1 = new Thread1(); 
		new Thread(thread1, "Juca").start();
		new Thread(thread1, "João").start();
	}
}

class Thread1 implements Runnable
{
	public void run() {
		try {
			synchronized(TesteThread.class)
			{
				if(!TesteThread.teste)
				{
					System.out.println(Thread.currentThread().getName() + " diz: Entrei");
					TesteThread.teste = true;
					System.out.println(Thread.currentThread().getName() + " diz: Dormi");
					TesteThread.teste.wait();
					System.out.println(Thread.currentThread().getName() + " diz: Acordei");
				}
				else
				{
					System.out.println(Thread.currentThread().getName() + " diz: vou acordar todo mundo");
					Thread.sleep(1000);
					TesteThread.teste.notifyAll();
				}
			}
		} catch (InterruptedException e) {		
			e.printStackTrace();
		}
	}
}

Quem puder me ajudar eu agradeço.

Criado 20 de fevereiro de 2008
Respostas 0
Participantes 1