Допустим, у меня есть 2 потока, t1 и t2 , и объект блокировки m . Поток t1 находится в бесконечном цикле, где на каждой итерации он захватывает блокировку m , выполняет некоторую работу, разблокирует m и немедленно запускается заново. За одну итерацию t2 запрашивает блокировку на m , но блокируется t1 и вынужден ждать. Теперь, когда t1 разблокирует m , гарантируется ли, что t2 получит следующую блокировку на m ? или может t1 ускользнуть от него на следующей итерации?
Как правило, есть ли очередь для ожидающих потоков? Если t1 имеет блокировку, и все остальные потоки, также желающие этой блокировки, будут заблокированы в следующем порядке: t2 , t3 , ..., оставшиеся потоки продолжают выполнение в том порядке, в котором они были заблокированы (например, t2 выполняется, затем t3 и т. д.)?
(Я кратко изучил java-спецификацию и не смог найти ответ. Если он там, пожалуйста, дайте мне знать, и я вернусь, чтобы прочитать более внимательно.)
Спасибо! (Первый ТАК, woohoo!)