問題点および改善策とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 問題点および改善策の意味・解説 

問題点および改善策

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/11 16:01 UTC 版)

Singleton パターン」の記事における「問題点および改善策」の解説

Java における一般的な Singleton パターン記述上述した通りであるが、この方法は同期化コストが高い。そこでdouble-checked lockingというイディオム考えられたが、「アウトオブオーダー書き込み」を許すJavaプラットフォームメモリーモデル原因で、同期化失敗する言うまでもないが、この最適化による副作用Java だけのものではない)。この問題克服しようとするとコード肥大化コストがかかる。そこで現在では以下のように static フィールド用いることが推奨されている。 final class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return Singleton.instance; }} これによりコスト改善される同期化行われないが、static フィールド初期化はそのクラス呼び出される最初一回か行われないため、何回getInstance()メソッド呼んでもスレッドアンセーフを心配する要はなくなるだけでなく、コストパフォーマンスも非常に高い。 ただしこの場合、Singletonクラスロードされたときに初期化されるのであって、getInstance()初め呼ばれたときではない。このことはプログラマ意図しないタイミング初期化始まってしまい混乱の元となる場合がある。そこで en:Initialization-on-demand holder idiom呼ばれる手法、すなわちinstanceフィールドのみを別のホルダークラスに隔離して、そのホルダークラスがロードされたときにSingletonの初期化が行なわれるよう改善したものが下記である。 final class Singleton { private Singleton() {} private static class SingletonHolder { private static final Singleton instance = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.instance; }} これでSingletonクラスロードされたときではなく、getInstance()呼び出しによりSingletonHolderクラスロードされたときにSingletonクラス初期化される。

※この「問題点および改善策」の解説は、「Singleton パターン」の解説の一部です。
「問題点および改善策」を含む「Singleton パターン」の記事については、「Singleton パターン」の概要を参照ください。

ウィキペディア小見出し辞書の「問題点および改善策」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「問題点および改善策」の関連用語

問題点および改善策のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



問題点および改善策のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのSingleton パターン (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS