可能重复:
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数组的值而言)?