Il mio codice è riportato di seguito.
Nel ciclo for sto ottenendo risultati inaspettati, ad esempio prima di completare l'esecuzione di for loop per 1st thread, il secondo thread entra in loop e mostra il valore incrementato.
public class ThreadSafe {
public static void main(String[] args) throws InterruptedException {
System.out.println("main()");
B b=new B("1st Thread");
B b1=new B("2nd Thread");
B b2=new B("3rd Thread");
b.start();
b1.start();
b2.start();
}
}
class MyCounter {
private static int count;
public static int getCount(){
for(int m=0;m<2;m++){
System.out.println(count+" "+Thread.currentThread().getName());
}
return count++;
}
}
class B extends Thread{
public B(String tname) {
super(tname);
}
public void run() {
MyCounter.getCount();
}
}
La domanda è quando il 1 ° thread viene eseguito per il ciclo, quindi altri thread che eseguono l'istruzione return è questa la ragione per mostrare il valore di incremento o qualcos'altro?
Quale altro thread può mostrare il valore incrementato a meno che il primo thread non raggiunga l'istruzione return?