Інженерний дизайн та аналіз
Розробка ниткобезпечних однотонних візерунків для багатопрочитаних додатків
Table of Contents
Дизайн однотонних візерунків, які є різьбовим захистом, є вирішальним у багаточитаних додатках, щоб забезпечити, що існує лише один екземпляр класу, навіть коли багаторазові нитки намагаються створити екземпляр одночасно. Ця стаття досліджує найкращі практики та загальні методи реалізації моделей з нижчою безпечною єдиною єдиною патологією.
Розуміння шаблону однотону
У єдинотонному патерні обмеження миттєвого відбиття класу до одного об'єкта. Часто використовується для управління спільними ресурсами, такими як підключення до бази даних або налаштування конфігурації. У багаточитаних середовищах, наївні однотонні виконання можуть призвести до декількох екземплярів, поразки призначення шаблону.
Виклики в багаточитаних середовищах
При багаторазових нитках намагаються створити екземпляр одночасно, можуть виникнути умови забігу. Без належної синхронізації, можуть пройти перевірку екземпляра і створити кілька об'єктів. Забезпечення безпеки ниток передбачає стратегії, які запобігають цьому стану забігу.
Двохххвисті замки
Ця методика зменшує синхронізацію накладної, перевіривши, якщо екземпляр вже існує перед придбанням замку. Вона передбачає два перевірки: один за межами синхронізованого блоку і один всередині. Правильне виконання вимагає волейних змінних для запобігання переадресації інструкції.
Приклад (Ява):
приватно статичної вівсяної однотонної екземпляра;
Русский статичний однотонний отримувач () {[]
if (instance == null) {
синхронізований (Singleton.class) {
if (instance == null) {
екземпляр = новий однотон ();
[[FLT:]] }[[FLT:]]]]]
[[FLT:]] }[[FLT:]]]]]
[[FLT:]] }[[FLT:]]]]]
// ]
}]]
Ідиом з імпералізацією
Цей підхід важелі завантажувальні механізми для забезпечення безпеки нитки без чіткої синхронізації. Однотонний екземпляр проводиться в межах незнімного статичного класу, який завантажується тільки при необхідності.
Приклад (Ява):
приватно статичний клас Тримач {
приватний статичний фінальний однотонний інсталяційний вузол = новий однотонний ();
}]]
Русский статичний однотонний отримувач () {[]
. Володар.INSTANCE;
}]]
Кращі практики безпеки ниток
- Використовуйте ідеманд-на-деманд тримач для простоти і ефективності.
- Забезпечити однотонну екземпляр за заявлену летючій застібці, якщо за допомогою подвійного замка.
- Уникайте зайвої синхронізації для поліпшення продуктивності.
- Тестування однотонних втілень ретельно в багатопрочитаних умовах.
Висновок
Впровадження правильного використання синхронізаційної синхронізації з використанням синхронізованих тримачів idiom з використанням кріплень, що дозволяє проводити ретельне використання синхронізованих фіксаторів. На основі пускової системи, що забезпечує гнучкість при правильному використанні летючих матеріалів.