java - java中的枚举如何线程安全?

标签 java enums singleton

java 中的枚举是如何线程安全的? 我正在使用枚举实现单例(根据 Bloch 的 Effective Java), 我应该担心我的单例枚举的线程安全吗? 有没有办法证明或反驳它是线程安全的?

// Enum singleton - the preferred approach
public enum Elvis { 
    INSTANCE;
    public void leaveTheBuilding() { ... }
}

谢谢

最佳答案

正如@Mike 所说,枚举的创建保证是线程安全的。但是,添加到枚举类的方法不提供任何线程安全保证。特别地,方法 leaveTheBuilding 可以由多个线程同时执行。如果此方法有副作用(更改某些变量的状态),那么您需要考虑保护它(即,使其同步)或其部分。

关于java - java中的枚举如何线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531873/

相关文章:

c# - Nullable<T> 如何使用它的基础值类型扩展方法

c++ - 我可以在 RCpp 中使用单例模式吗?

java - Effective Java Item #77 - 单例对象的序列化 - 为什么我必须使用 readResolve?

java - 来自对象数组列表的 JComboBox 值

java - NoSuchMethodError : registerAutoProxyCreatorIfNecessary with Spring 4, Hibernate 4 和 Maven 3

java - 覆盖 AWT 事件调度线程

java - 在 BaseFragment 中使用 dagger2 实例化 View 模型

c# - C# 中 Enum.Parse 的通用版本

c# - 通过自定义属性获取枚举(通用)

ios - 类方法单例对象可以响应委托(delegate)调用吗?