私はそれの静的インスタンスを作成してシングルトンとして使いたいクラスを持っています。もちろん、私はスレッドセーフであることも望みます。プライベート静的メソッドを使用してシングルトンスレッドを安全にしますか?
私は私的なデータを共有していないと仮定します。しかし、私が間違っていないと、静的オブジェクトインスタンスのメソッドを呼び出すときに、メソッド内の変数がスレッド間で共有され、予測できない結果になるという問題が残っています。
しかし、実際の静的メソッドを呼び出すときには、新しいスタックフレームが作成されるため、スレッドセーフ(それ自体)になります。もう一度、もし私が間違っていないならば。
シングルトンのこのパターンはスレッドセーフであるでしょうか?私は、インターフェイスに基づいてシングルトンを持っている必要があり、異なる実装を持って、戦略の一環として - 私は最初の場所で静的クラスを作成していない理由を不思議に思っている場合には
class Singleton
{
public object SomeMethod(object arg) {
return Singleton.SomeMethodImpl(arg);
}
private static object SomeMethodImpl(object arg) {
// is in unique stack frame?
object Result;
...
return Result;
}
}
パターン。これは静的クラスでは機能しません。
シングルトンを作成する方法の良い例が必要な場合は、http://www.dofactory.com/Patterns/PatternSingleton.aspxを参照してください。 –
ちょうどそれをスキミングしました。良い情報 - ブックマーク。私の目的では、クラス内の共有データにアクセスしていないので、ロックを心配する必要はないと思います。 –