这个ENUM方法线程安全吗?

时间:2013-06-15 18:16:10

标签: java enums thread-safety

这个ENUM代码线程安全吗?

enum One{
    IONE;
    public mone(){
        // some code
    }
}

当上面的代码不安全时?

3 个答案:

答案 0 :(得分:4)

枚举值保证只能在使用之前由单个线程初始化一次。但是,添加到枚举类的方法不带任何线程安全保证。如果你有一个枚举,以便方法不改变它的状态,那么它们按照定义是线程安全的

答案 1 :(得分:1)

只要你的方法本身是。

特别对待枚举:

  • 在加载类时初始化它们(这就是为什么你可以在注释中使用它们);
  • 他们总是final;
  • 枚举值始终为static final

答案 2 :(得分:0)

One枚举中没有共享数据,mone(需要返回类型)中的所有变量都是本地变量。所以,这一切都取决于mone的内容。如果该方法在其他类中使用带有状态的单例,则可能会出现问题。