Перепроверяемая блокировка является шаблоном программного дизайна, используемым для сокращения издержек получения блокировки первым тестированием критерия блокировки, на самом деле не получая блокировку.

Из Википедии:

В разработке программного обеспечения перепроверяемая блокировка (также известный, как "перепроверяется блокировка оптимизации" 1) является шаблоном программного дизайна, используемым для сокращения издержек получения блокировки первым тестированием критерия блокировки ("подсказка блокировки"), на самом деле не получая блокировку. Только если проверка критерия блокировки указывает, что блокировка требуется, делает фактическую логику блокировки, продолжаются.

Шаблон при реализации на некотором языке/комбинациях аппаратных средств может быть небезопасным. Время от времени это можно считать антишаблоном. [2]

Это обычно используется для сокращения блокировки наверху при реализации "ленивой инициализации" в многопоточной среде, тем более, что часть Шаблона "одиночка". Ленивая инициализация старается не инициализировать значение до первого раза, когда к ней получают доступ.