このプログラムを実行すると、結果が変わります。誰かが私に説明したり、コード内で何が起こっているのかを理解するために答えを見つけることができるトピックを教えてくれますか?Javaでのマルチスレッドの問題点、ランタイムでの異なる結果
class IntCell {
private int n = 0;
public int getN() {return n;}
public void setN(int n) {this.n = n;}
}
public class Count extends Thread {
static IntCell n = new IntCell();
public void run() {
int temp;
for (int i = 0; i < 200000; i++) {
temp = n.getN();
n.setN(temp + 1);
}
}
public static void main(String[] args) {
Count p = new Count();
Count q = new Count();
p.start();
q.start();
try { p.join(); q.join(); }
catch (InterruptedException e) { }
System.out.println("The value of n is " + n.getN());
}
}
[_very beginning_](https://docs.oracle.com/cd/E19455-01/806-5257/6je9h032e/index.html)から始め、Javaの並行性について学ぶ必要があると思います。このコードは、ランダムな結果を生成するように設計されているようです。メモリの障壁がなければ並行性は予測できないという基本的な点です。要するに、このコードがランダムな回答を生成する理由を説明することは、あなたを助けることはまずありません。同時コードを書く前に**多くの読書をする必要があります。 –