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