ラベル シングルトン の投稿を表示しています。 すべての投稿を表示
ラベル シングルトン の投稿を表示しています。 すべての投稿を表示

2020/03/21

Java のシングルトンを正しく実装しよう

Java プログラマの皆さん、シングルトンを正しく実装できますか? 「そんなの簡単だよ」とおっしゃると思いますが、意外と注意点が多いものです。ここでは正しいシングルトンの実装を確認しておきたいと思います。

Initialization-on-demand holder idiom

Initialization-on-demand holder とは?

Nested static class が使えて、そのクラスの初期化が、そのクラスに初めてアクセスされたときに行われるようになっている言語では、Initialization-on-demand holder という idiom で変数の遅延初期化を行うことができます。
クラスの初期化は同期化されているはずなので、マルチスレッドプログラムでも多重に初期化が実行されることはありません。また、アウト・オブ・オーダー実行によって初期化が不完全な変数を参照してしまうこともありません。
シングルトンインスタンスの遅延初期化によく用いられます。