4

这个 ENUM 代码线程安全吗?

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

当上面的代码不是安全的?

4

3 回答 3

4

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

于 2013-06-15T18:18:43.127 回答
1

只要您的方法本身是,它就是。

枚举被特殊对待:

  • 它们在类加载时被初始化(这就是你可以在注释中使用它们的原因);
  • 他们总是final
  • 枚举值始终是static final.
于 2013-06-15T18:19:58.170 回答
0

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

于 2013-06-15T18:21:18.083 回答