Я просмотрел всю документацию java в операторах synchronized
, которые искали ответ на этот вопрос, не повезло.
Скажем, что у меня есть thread1
, thread2
, thread3
, пытающиеся запустить следующий код одновременно.
synchronized(lockObj) {
doSomething();
}
Предположим, что thread1
получает сначала doSomething()
, thread2
, затем thread3
, который будет блокировать и ждать в операторе synchronized
.
Вопрос
- Когда
thread1
освобождает блокировку, какой из потоков будет выпущен первым? - Что такое правило общего порядка, которое применяется при освобождении блокировки?