は、私は現在のプログラムシングルトンデザインパターンを実装しています。 1つのメソッドは、メソッドの前に同期タグを付けることだけですが、インタビュアーは、メソッドをスレッドセーフにするための他のより効率的な方法があると言いました。スレッド安全な方法
誰でもアイデアを提供できますか?
は、私は現在のプログラムシングルトンデザインパターンを実装しています。 1つのメソッドは、メソッドの前に同期タグを付けることだけですが、インタビュアーは、メソッドをスレッドセーフにするための他のより効率的な方法があると言いました。スレッド安全な方法
誰でもアイデアを提供できますか?
少なくとも3つは私が考えることができますが、それらのうちの2つは同じ原則に沸きます。
基本的に、クラスローダーはスレッドセーフについて心配するか、Java5以降のダブルチェックロックを使用できます。
最初のバージョンは、実際のコードを含む内部クラス/列挙型を意味します.2番目は、シングルトンインスタンスをvolatileにし、通常のif-synchronize-ifソリューションを使用します。
ああ私の言葉、これはまたありません。同期ゲッターを作ることは次善の策である
public class Singleton {
private static Singleton s = new Singleton();
// ...
}
:
これを書くための非常に最良の方法は、最も簡単です。それを行うにはさらに複雑な方法がいくつかありますが、そのどれも努力する価値はありません。は非常にです。
http://en.wikipedia.org/wiki/Singleton_patternをチェックし、Bill Pughのコードを確認してください(最高のenumを使用しないでください) – asela38
これは[このすばらしい答え]で説明されています(http://stackoverflow.com/question/9239832/need-information-on-single-class-in-java/9239856#9239856)と非常によく似た質問 – Bohemian