要有一個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