[Dúvida] Thread com synchronized

O código é seguinte:

package Diagnotisc;

public class Questao64 extends Thread{

	public void restart(){
		startMe();
	}
	
	public static void startMe(){
		synchronized (Questao64.class){
			Questao64.class.notifyAll();
			System.out.println("Trying to Notify");
		}
	}
	
	public void run(){
		try{
			synchronized (this){
				wait();
				System.out.println("Nofified");
			}
		}catch (InterruptedException e){
			
		}
	}
	
	public static void main (String args[]){
		Questao64  q = new Questao64();
		q.start();
		q.restart();
	}
}

Ele imprimirá apenas “Trying to Notify”.

Entao, eu gostaria de mudar este codigos para imprimir tambem “Nofified”. Modifiquei a linha " synchronized (this){" para “synchronized (Questao64.class){”. Mas lancara uma excecao IllegalMonitorStateException durante execução.

Alguem tem alguma ideia para arrumar estes codigos para imprimir “Nofified” e “Trying to Notify” sem lancar a exceção?

Grato

No método startMe:

public void startMe(){ // modificar de método de classe para método de instância retirando static synchronized (this){ //bloquear no objeto corrente notifyAll(); //chamar notifyAll do objeto corrente, para notificar todas as threads que aguardam pelo bloqueio desse objeto, nesse caso apenas uma está aguardando System.out.println("Trying to Notify"); } }
No método main:

public static void main (String args[]){ Questao64 q = new Questao64(); q.start(); try{ Thread.sleep(1);//colocar a thread main para dar uma dormidinha mínima, suficiente para a outra thread executar e chamar wait antes da chamada a notifyAll }catch(InterruptedException e){ } q.restart(); }
Essa é uma idéia, não sei se é a que vc esperava. De qualquer forma ela imprime as duas Strings e não lança exceção.

Ok… acho que vc precisa urgentemente reforçar a sua teoria sobre threads.

A “dormidinha” que o javadev colocou é interessante para demonstrar o conceito, mas também não pense que é bom basear um código multi-threaded nisso. Aqui vão alguns posts que podem te ajudar:
http://www.guj.com.br/posts/list/53187.java#279817
http://www.guj.com.br/posts/list/57781.java#303957
http://www.guj.com.br/posts/list/52481.java#276136

Qualquer coisa é só perguntar.