可能重复:
java中的枚举如何线程安全?
让有一个enum
类
public enum Type
{
ONE, TWO, THREE, FOUR
}
在循环Type.values()
中访问数组线程是否安全,例如在静态方法中?for
例如:
public static void process()
{
for (Type type:Type.values())
{
// Do something
}
}
此外,如果使用这些值的任何子集定义一个静态数组变量,那么读取是否是线程安全的?例如:
public static final Type[] TYPES = new Type[] {TWO, THREE};
public static void process()
{
for (Type type:TYPES)
{
// Do something
}
}
在这两种情况下,process()
方法可能属于与Type
enum
数组types
的定义不同的类。
此外,该TYPES
数组可以在 中定义一次,Type
enum
并由 that 的静态方法返回enum
。
那么,鉴于上述情况,如果多个线程同时运行该process()
方法,代码是否是线程安全的(至少对于读取TYPES
数组的值而言)?