Não consigo entender a lógica do bloco sincronizado

0 respostas
E

Olá !!!

Estou estudando threads e não consigo entender o funcionamento do programinha abaixo. Aliás, eu não consigo entender a lógica do bloco sincronizado.

Alguém poderia me ajudar ???

obs. Quando cai uma questão nos simulados contendo blocos sincronizados eu não consigo acertar a resposta.


class A extends Thread {
  String[] sa;

  public A(String[] sa) {
       this.sa = sa;
  }

  public void run() {
    synchronized (sa) {
      while (!sa[0].equals("Done")) {
        try {
          sa.wait();
         } catch (InterruptedException ie) {}
       }
     }
    System.out.print(sa[1] + sa[2] + sa[3]);
  }
}


 public class Filho {
  private static String[] sa = new String[]{"Not Done","X","Y","Z"};
  
  public static void main (String[] args) {
    Thread t1 = new A(sa); 
    t1.start();
    synchronized (sa) {
      sa[0] = "Done";
      sa[1] = "A";
      sa[2] = "B"; 
      sa[3] = "C";
      sa.notify();
     }
   }
}

Criado 11 de setembro de 2007
Respostas 0
Participantes 1