重複の可能性:
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
、その静的メソッドによって返される可能性がありenum
ます。
したがって、上記の場合、複数のスレッドがprocess()
メソッドを同時に実行している場合、コードはスレッドセーフになりますか(少なくともTYPES
配列の値を読み取るためだけに)?