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