2

怠惰なインスタンス化されたシングルトンパターンを使用していくつかの問題に遭遇しました

参照:http ://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html 。

同様に、初期のインスタンス化されたシングルトンパターンの使用に問題はありますか?

4

2 に答える 2

3

これは約10年前に書かれたものです。2004 年以降、最も単純なシングルトン パターンはenum、1 つのインスタンスで を使用することです。

enum Singleton {
    INSTANCE;
}
于 2011-11-30T10:23:41.720 に答える
2

シングルトンのインスタンス化にはコストがかかる可能性があるため、早期に(そしておそらく多くのシングルトンに対して)実行すると、アプリケーションの起動時に長い一時停止が発生する可能性がありますが、怠惰なインスタンス化は遅延を分散させて回避する可能性がありますシングルトンが常に必要であるとは限らない場合は完全に。

これは本当に多くのアプリケーションの問題ですか?私はそうではないと確信しており、怠惰にインスタンス化されたシングルトンに関するブログ投稿や質問の量は、その実用的な有用性とは完全に釣り合いが取れていません。このすべての注意が、これがシングルトンの実装方法であるという印象を多くの人々に与え、単純な半熱心にインスタンス化されたシングルトンが完全に問題ない場所で不必要に複雑なソリューションを選択させたと私は確信しています。

では、なぜこの問題がそれほど注目されるのでしょうか。部分的には、並行コード全般に関連するJavaメモリモデルのいくつかの細かい点を示しているという事実であり、部分的にはスマートアセリのゲームであると思われます。

于 2011-11-30T10:34:18.090 に答える