Me deparei com a seguinte questao e nao consegui entender como um método sincronizado poderia gerar a seguinte saida
public class PingPong implements Runnable{
public static void main(String[] args)
{
new Thread(new PingPong()).start();
new Thread(new PingPong()).start();
}
synchronized void hit(long n)
{
for(int i = 1 ;i<3;i++)
{
System.out.println(n + "-" + i + " ");
}
}
@Override
public void run() {
hit(Thread.currentThread().getId());
}
}
output: 8-1 7-1 7-2 8-2
Devido ao fato do método ser sincronizado, nao deveria ser executado um for , depois liberado a chave e executado o outro?
Muito obrigado a todos desde ja !
