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是8,8。但是,如果我在枚舉的O/P爲5和8加一個私有構造。o/p是8和8的邏輯是什麼。
這可能是一個競爭條件,即't2'在't1'調用'demo()'之前設置值8。請注意,'samp'和'temp'指的是_exact same_實例。 – Thomas