Thread class com join para escrever ABC

Olá a todos!

Preciso de uma ajuda para criar um programa que imprima ABC usando 3 threads, cada thread escrevendo uma letra. Tem que imprimir na ordem ABC sempre.

Aguns detalhes, o programa principal só pode criar os objetos e dar o start neles, e não pode usar sleep, tem que ser o join. E o join não pode estar dentro do programa principal.

Fiz o seguinte:

public class Escrever extends Thread
{

  private String letra;
  
   public Escrever(String letra)
   {
          this.letra = letra;
   }
  
   @Override
   public void run ()
   {     
          try
          {
                 if ( letra == "A")
                 {
                       this.join(100);
                       System.out.print(letra);
                 }
                 else if ( letra == "B")
                 {
                       this.join(200);
                       System.out.print(letra);
                 }
                 else if ( letra == "C")
                 {
                       this.join(300);
                       System.out.print(letra);
                 }
          }
          catch (InterruptedException ie)
          {
                 ie.printStackTrace();
          }
     }
}

public class TestaEscrever {
   public static void main(String[] args) 
   {
       Escrever letra1 = new Escrever("A");
       Escrever letra2 = new Escrever("B");
       Escrever letra3 = new Escrever("C");
    
       letra1.start();
       letra2.start();
       letra3.start();
   }
}

Os codigos acima escrevem ABC sempre, mais o professor disse que está errada, não pode ser implementado assim passando os parametros para o metodo join.

Alguém teria uma ideia de como posso implementar da maneira correta ? Lembrando que tem que ser usando join, e não pode suar join dentro do programa principal.

Obrigado,
Filipe

A classe que você criou tem 1 Thread para imprimir as letras e o seu professor quer três.

Assista até a aula 96.
Eis a 93.

Depois de uma olhada aqui:

Não sei se vai ajudar, mas para ter uma noção do efeito, tente entender as seguintes instruções:

System.out.println("Em espera "+Thread.currentThread().getName());
Thread.currentThread().join(1345);//remova o 1345, coloquei só pra avaliação