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.