0
こんにちは、私は以下のスニペットの出力を理解するのに役立つことができますか?スレッドによって呼び出される列挙型のシングルトン
列挙 -
public enum SingletonEnum {
INSTANCE;
int num;
public void demo(){
System.out.println(num);
}
}
メインクラス -
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable(){
public void run(){
SingletonEnum samp = SingletonEnum.INSTANCE;
samp.num= 5;
samp.demo();
}
});
Thread t2 = new Thread(new Runnable(){
public void run(){
SingletonEnum temp = SingletonEnum.INSTANCE;
temp.num= 8;
temp.demo();
}
});
t1.start();
t2.start();
}
O/P iが列挙型でプライベートコンストラクタを追加する場合は、O/pは5と8で8,8 .Howeverですo/pが8と8の背後にあるロジックは何ですか?
おそらくレースの状態です。つまり、 't2'は' t1'が 'demo()'を呼び出す前に値8を設定します。 'samp'と' temp'は_exact same_インスタンスを参照しています。 – Thomas