Criei um código e obtive um resultado que eu não soube explicar o motivo, segue o código:
private volatile static int contador = 0;
public static void main( String[] args ) {
for( int i = 0; i < 10000; i++ ) {
Thread thread = new Thread() {
public void run() {
contador++;
System.out.println( contador );
}
};
thread.start();
}
}
Sei que não é garantida a impressão sequencial e crescente dos valores, ou seja, alguns números podem se repetir e eles serão impressos em uma ordem aleatória.
O que me deixou confuso foi o fato de que o número 10000 não foi impresso.
Alguém sabe me dizer o motivo?
Utilizei o java 6 64bits na execução do teste.