Как JAVA может дать две блокировки одному и тому же сегменту кода? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть две блокировки - lock1 и lock2 в моем коде, и я хочу присвоить одному сегменту кода эти две блокировки следующим образом:

synchronized(lock1 || lock2) {
    // code
}

Это означает, что если заняты lock1 или lock2, этосегмент кода будет ждать, пока обе блокировки не освободятся.Как я могу это сделать?Спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете вкладывать их:

synchronized (lock1) {
    synchronized (lock2) {
        //code
    }
}

См. этот ответ о возможных рисках, связанных с вложенной блокировкой.

...