Threads novamente

O código compila?

package teste;

public class Teste1 extends Thread {
  public synchronized void run() {
    System.out.println("Done");
  }
  
  public static void main(String[] args) {
    Teste1 t = new Teste1();
    t.start();
  }
}

quem ja é certificado pode responder essas perguntas tudo ai? hehe

nao saco muito da parte de threads, pois cheguei apenas a fazer alguns testes simples com threads aqui, nunca me aprofundei mto.
mas acho que o run() nao pode ser synchronized, ou viajei?
pq aí ele seria executado do inicio ao fim, sem dar a vez pra outras threads(supondo que eu entendi corretamente a função do ‘synchronized’), ou será que viajei mais ainda?

Com certeza complia sim, sem problemas.

sim, compila sem problemas e exibe: Done

Também não vejo por que não compilar e rodar.
Qual é a resposta, afinal?

Compila e imprime Done.

A intenção foi apenas mostrar que apesar de sincronizado o método run() está sendo substituído o run() da classe Thread.

Robson :wink:

Não afeta pq colocar um sichronized não altera a assinatura do método, para tanto fazendo o mesmo exemplo só que assim:

public class Teste implements Runnable {
    public synchronized void run() {
      System.out.println("Done");
    }

    public static void main(String[] args) {
      Teste t = new Teste();
      Thread th = new Thread(t);
      th.start();
    }

}

Tb compila imprime Done