Реализация класса Singleton в многопоточной среде - PullRequest
0 голосов
/ 28 февраля 2011

В многопоточной среде, где 50 одновременных потоков обращаются к одноэлементному объекту. Может ли это привести к проблемам с производительностью, поскольку могут быть заблокированы потоки ситуаций, поскольку все потоки будут пытаться получить доступ к одному экземпляру?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

одновременный доступ не будет проблемой.но вы должны быть осторожны с синхронизацией такого доступа.то есть (я полагаю, мы говорим о Java)

    class MySingletonFactoryClass 
    {
       public static MySingleton getInstnace() 
       {
          synchronized(MySingletonFactoryClass.class) {
            if(instance == null)
              instance = new MySingleton();

            return instance;    

         }
      }
   }
0 голосов
/ 03 октября 2014

Не будет проблемы с производительностью, и вам НЕ нужно ничего синхронизировать и никоим образом не оборачивать, просто реализуйте это рекомендуемым образом:

public class MySingleton {
    private static MySingleton _instance;
    private MySingleton() {
         //initialize it here 
    }
    public static MySingleton getInstance() { return _instance; }

    //other methods of the class here 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...