指定されたリンクで、指定されたオプションを見て、このコードで最悪のことを説明するオプションを選択してください。
3 に答える
Mango の複数のインスタンスを作成できます
はい: 2 つのスレッドがgetInstance
同時に実行される場合、両方がINSTANCE
null を認識し、新しいインスタンスを作成する可能性があります。
マンゴーは決して作られません
あれ… を呼ぶgetInstance
とインスタンスが生成されるので、いいえ。
コンストラクターはプライベートであり、呼び出すことはできません
いいえ、クラス内から呼び出すことができますgetInstance
value はガベージ コレクションされる可能性があり、getInstance の呼び出しはガベージ データを返す場合があります。
INSTANCE
到達可能である限り、ガベージ コレクションは行われません - 静的変数の場合、つまり JVM の存続期間中 (*)。
(*) より正確には、クラスがロードされている限り、ガベージ コレクションは行われません。関連するクラスローダー自体がガベージ コレクションされている場合、クラスはアンロードされる可能性があります。
これは古典的なシングルトン オブジェクトの設計パターンです。
何が最悪かは、要件によって異なります。これがより大きなプログラムのクラスである場合、私の理解によれば、マンゴーは一度しか作られるべきではありません.
assyliasが言ったように、同期されたキーワードがあるまで、結果はmangoの2つのオブジェクトにつながる可能性があります(ただし、それはまれなケースです)
synchronized public static Mango getInstance()
{
if ( INSTANCE == null )
{
INSTANCE = new Mango();
}
return INSTANCE;
}
答えはオプションAだと思います:「Mangoの複数のインスタンスを作成できます」適切な同期がなければ、2つ以上のスレッドが同時に getInstance() を呼び出し、Mangoを非修飾シングルトンにする可能性があります
ちなみに、これは宿題や面接の質問のようです!:)