带有Enum的Singleton由线程调用

时间:2016-11-10 13:01:46

标签: java singleton

您可以帮我理解下面代码段的输出吗?

Enum -

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。

1 个答案:

答案 0 :(得分:0)

您的代码未同步。这只是未指定的行为,您可以在这种情况下观察任何事情。