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();
}
}
}