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