Освобождение "синхронизированной" блокировки - PullRequest
5 голосов
/ 04 мая 2011

Возможно ли что-то подобное с synchronized, или мне нужно использовать java.util...Lock:

public void outer() {
 synchronized(lock) {
  inner();
 }
}

public void inner() {
 thing1();
 release(lock) {
  result = doLongNetworkRequest();
 }
 thing2(result);
}

Ответы [ 2 ]

6 голосов
/ 04 мая 2011

Вы можете использовать java.util.concurrent.locks. У них есть lock() и unlock()

2 голосов
/ 04 мая 2011

К сожалению, вы не можете разблокировать мониторы, удерживаемые во время синхронизированного блока. Вам придется использовать блокировку или два, чтобы делать то, что вы хотите.

...