私はここに、いくつかのCALCSを実行クラスの静的メソッドを持っているが、コードスニペットです:マルチスレッドプログラムスレッドのクラスの静的メソッドの実行は安全ですか?
public MyClass {
MyClass(){}
public static float runCalcs()
{
float sum;
Float[] floatArray = map.entrySet()
.stream()
.map(key -> key.getKey().getPrice())
.toArray(size -> new Float[size]);
for(int i=0; i<floatArray.length; i++) {
sum += floatArray[i];
}
return sum;
}
}
私の質問は、私はそうのようなスレッドからこのメソッドを実行すると次のとおりです。
float retVal = MyClass.runCalcs();
はこれですスレッドセーフな静的メソッドの実行、またはスレッドセーフなものにするために、MyClass.RunCalcs()を同期またはロックする必要があります。
私のアプリケーションでは、複数のスレッドが同時にこのメソッドを実行します。
私にお知らせください。
事前に感謝!
'map'はどこから来たのですか? –
runCalcs()が実行されている間、他のスレッドによって 'map'(何らかの静的コンテキストが必要)が更新できるかどうかによって異なります。 –
@Andrew S.ありがとうございました – MazS