Bom, não consigo entender essa que encontrei em um exercicio da Kathy Sierra…procurei saber como esse “literal de classe” que ela comenta no livro, mais não entendo como está sincronizando com isso. Entendo bem a sincronização com objeto…mais essa…
A pergunta do livro, pagina 419
Dado:
public class Letters extends Thread{
private String name;
public Letters(String name){
this.name = name;
}
public void write(){
System.out.println(name);
System.out.println(name);
}
public static void main (String[] args){
new Letters("X").start();
new Letters("Y").start();
}
}
Queremos nos certificar que a saída seja ou XXYY ou YYXX, mas nunca XYXY nem qualquer outra combinação. Quais das seguintes definições de métodos poderiam ser adicionadas à classe Letters para se obter essa garantia?(Marque todas as corretas)
Tem duas respostas:
public void run(){
synchronized(Letters.class) {
write();
}
}
public void run(){
synchronized(System.out){
write();
}
}
É esse “Letters.class” que não entra na minha cabeça…
E ufa, já estou quase acabando este livro…vou comerçar a rever e estudar as coisas mais dificeis…
Obrigado e até…