2013-03-14 2 views
0

В данной ссылке, посмотрите на варианты данных и выберите параметр, описывающий худшее с этим кодом:Получение экземпляра из метода

https://gist.github.com/d34th4ck3r/49e9ae56458d4ed0f8ae

+0

Как вы думаете? –

+0

Итак, в чем вопрос? –

+0

это вопрос интервью .. ?? Этот вопрос здесь не входит – 2013-03-14 12:16:26

ответ

4

Более одного экземпляра манго может создаются

Да: если два потока выполняет getInstance одновременно, они оба могли видеть INSTANCE утратившего создать новый экземпляр

манго никогда не будут созданы

да ... если вы звоните getInstance, экземпляр будет создан, так что нет.

Конструктор является частным и не может быть назван

Нет, она может быть вызвана из класса, getInstance

значения может быть мусором, а также призыв к getInstance может возвращать данные мусора

INSTANCE не будет собирать мусор, пока он i s достижимый - в случае статической переменной, то есть на весь срок службы JVM (*).

(*) точнее, это не будет сбор мусора, пока класс загружен. Класс может быть выгружен, если связанный с ним загрузчик классов - это сбор мусора.

+1

+1 хороший ответ за плохой вопрос – Bohemian

+0

Спасибо за быстрый ответ, я был смущен между сборкой мусора и несколькими экземплярами. – d34th4ck3r

0

Это классический Синглтон шаблон дизайна объекта

, Что худшее зависит от требований. согласно моему пониманию, если это класс более крупной программы, то манго никогда не следует делать больше одного раза.

, как assylias сказал, до тех пор, пока не будет синхронизирован ключевым слово результат может привести к 2 объектам манго (но тот угловой случай)

synchronized public static Mango getInstance() 
    { 
     if (INSTANCE == null) 
     { 
      INSTANCE = new Mango(); 
     } 
     return INSTANCE; 
    } 
0

Я думаю, что ответ варианта A: «Больше, чем один экземпляр манго может быть создан» Без надлежащего sychronization, два или более потоков могут называть GetInstance() одновременно и что делать манго неквалифицированного Singleton

Кстати, это выглядит как домашнее задание или интервью вопрос! :)

Смежные вопросы