Блокировка с блочной структурой означает, что шаблон для получения и освобождения блокировок отражает структуру лексического кода. В частности, часть кода, которая получает блокировку, также отвечает за ее снятие; например,
Lock lock = ...
lock.acquire();
try {
// do stuff
} finally {
lock.release();
}
Альтернатива («блокировка без блочной структуры») просто означает, что указанное выше ограничение не применяется. Вы можете делать такие вещи, как получение блокировки одним методом и освобождение его другим. Или (гипотетически) даже передать блокировку другому потоку, чтобы освободить 1 . Проблема в том, что этот вид кода намного сложнее получить, и его сложнее анализировать, чем примеры, подобные приведенному выше.
1 - Осторожно. Если вы передаете полученные блокировки между потоками, вы можете столкнуться с аномалиями памяти или, что еще хуже. На самом деле, я даже не уверен, что это допустимо в Java.
«Блочная структура», упомянутая в цитируемом тексте, явно говорит о лексической структуре кода. , согласно статье в Википедии о блоке topi c (программирование) . Если в китайской версии Java параллелизма на практике используются символы, означающие «блокирование» в смысле Блокирование (программирование) , то это неправильный перевод.