Здесь есть только одна блокировка (блокировка для одного конкретного Buffer
объекта), поэтому порядок линеаризации - это просто порядок, в котором эта блокировка получена (или разблокирована - это тот же порядок). Блокировка всегда снимается при входе в wait
и приобретается при выходе из wait
, поэтому в этом контексте вы слышали о порядке освобождения wait
.
Я не уверен, что вы подразумеваете под "проверьте, что оно линеаризуемо". Если под этим вы подразумеваете, что любое параллельное выполнение эквивалентно некоторому последовательному упорядочению, то здесь это довольно очевидно (хотя в общем и целом сложно), поскольку все обращения к памяти находятся под одной блокировкой, поэтому параллельное выполнение фактически отсутствует.