要有一个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
中定义一次,并由该enum
的静态方法返回。因此,鉴于上述情况,如果多个线程同时运行process()
方法,代码是否是线程安全的(至少只是读取TYPES
数组的值)?
我已经阅读过这个问题,它与我的不一样。 :-) – PNS 2012-07-09 18:41:17
你认为它有什么不同?看起来和我一样。枚举在Java中保证是线程安全的,在运行时无法修改枚举的值,所以可以保证迭代类型是安全的。 – jjathman 2012-07-09 18:44:30
这是我想要确认的,实际上。 – PNS 2012-07-09 18:50:56