Домой Без рубрики Потокобезопасная и быстрая реализация Singleton — шаблон проектирования Singleton в Java

Потокобезопасная и быстрая реализация Singleton — шаблон проектирования Singleton в Java

575
0

В разработке программного обеспечения singleton pattern это шаблон проектирования, который ограничивает создание экземпляров класса one object , Это полезно, когда ровно один объект необходим для координации действий в системе. Эта концепция иногда обобщается на системы, которые работают более эффективно, когда существует только один объект, или которые ограничивают создание экземпляра определенным числом объектов.

Пример:

Диспетчеры окон, диспетчеры очереди печати и файловые системы являются типичными примерами. Как правило, к этим типам объектов — известных как синглтоны — получают доступ разрозненные объекты в программной системе, и поэтому им требуется глобальная точка доступа.

Шаблон проектирования Singleton решает все вышеперечисленные проблемы.

С помощью шаблона проектирования Singleton вы можете:

  • Убедитесь, что создан только один экземпляр класса
  • Предоставить глобальную точку доступа к объекту
  • Разрешить несколько экземпляров в будущем, не затрагивая клиентов одноэлементного класса

Другой должен прочитать:

Вот пример шаблона проектирования синглтона.

Простой шаблон Singleton: (Ленивая инициализация + ThreadSafe с синхронизированным блоком)

CrunchifySingleton.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
пакет ком . crunchify. учебные пособия ;
общественности учебный класс CrunchifySingleton {
частный статический CrunchifySingleton instance знак равно ноль ;
защищенный CrunchifySingleton ( ) {
}
// Ленивая инициализация (если требуется, то только)
общественности статический CrunchifySingleton getInstance ( ) {
если ( экземпляр == ноль ) {
// Поток безопасно. В некоторых случаях это может быть дорогостоящей операцией
синхронизированный ( CrunchifySingleton . Класс ) {
если ( экземпляр == ноль ) {
пример знак равно новый CrunchifySingleton ( ) ;
}
}
}
вернуть экземпляр ;
}
}

Из примера видно, что традиционный подход не является потокобезопасным , поскольку возможно, что перед тем, как поток создаст экземпляр Singleton, другой поток переходит к части кода, в которой выполняется создание экземпляра (т.е. instance = new Object (); ), поскольку Экземпляр условия == ноль по-прежнему верно .

ЧИТАТЬ ТАКЖЕ:  WordPress, Yoast SEO и Google Sitelinks Searchbox

Auto T hreadSafe Singleton Pattern:

ThreadSafeSingleton.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
пакет ком . crunchify. учебные пособия ;
общественности учебный класс ThreadSafeSingleton {
частный статический окончательный объект пример знак равно новый Объект ( ) ;
защищенный ThreadSafeSingleton ( ) {
}
// Инициализация во время выполнения
// По умолчанию ThreadSafe
общественности статический объект getInstance ( ) {
вернуть экземпляр ;
}
}

Благодаря такому подходу мы обеспечиваем необходимую безопасность потоков , поскольку экземпляр Singleton создается во время загрузки класса. Любые последующие вызовы метода getInstance () вернут уже созданный экземпляр. Кроме того, реализация оптимизирована, поскольку мы избавили от необходимости проверять значение экземпляра Singleton, то есть instance == null .

Дополнительные примеры коллекции Java : https://crunchify.com/category/java-tutorials/

Потокобезопасная и быстрая реализация Singleton — шаблон проектирования Singleton в Java

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь