У меня относительно простой (возможно, глупый) вопрос по поводу синхронизации в Java.
У меня есть блоки синхронизации, которые блокируют различные объекты в моем коде. В некоторых сценариях я хочу получить глобальную блокировку, которая включает в себя все остальные операторы синхронизации в моем коде.
Есть ли причудливый способ сделать это на Java, не переписывая весь текущий код синхронизации?
Например,
Нить т1
synchronized (o1)
{
synchronized (o2)
{
// ...
}
}
Резьба т2
synchronized (global_lock)
{
// ...
}
Когда поток t2 находится внутри синхронизированного блока, поток t1 не должен получать блокировки на o1 и o2.
Большое спасибо, если