Порядок синхронного выпуска

Я просмотрел всю документацию java по операторам synchronizedв поисках ответа на этот вопрос, но безуспешно.

Скажем, у меня есть thread1, thread2, thread3, пытающиеся запустить следующий код одновременно.

 synchronized(lockObj) { 
     doSomething();
 }

Предположим, что thread1сначала переходит к doSomething(), thread2, а затем к thread3, что заблокирует и будет ожидать оператора synchronized.

Вопрос

  1. Когда thread1снимает блокировку, какой из потоков будет освобожден первым?
  2. Каково общее правило порядка, которое применяется при снятии блокировки?
11
задан GETah 30 June 2012 в 16:24
поделиться