public class Messager implements Runnable {
public static void main(String[] args){
new Thread(new Messager("Wallace")).start();
new Thread(new Messager("Gromit")).start();
}
private String name;
public Messager(String name) { this.name = name; }
public void run() {
message(1);
message(2);
}
public synchronized void message(int n){
System.out.println(name + "-" + n + " ");
}
}
A resposta:
“Ambos os Threads exibirão duas mensagens cada. Wallace-1 deve vir antes de Wallace-2, e Gromit-1 deve vir antes de Gromit-2 Fora isso as mensagens Wallace e Gromit podem vir em qualquer ordem.”
onde uma saída se misturou a outra saída. É pouco provável mas pode ocorrer, por isso é que se usou o synchronized (nesse caso, apenas uma thread consegue imprimir na tela de cada vez.)