Возможно ли что-то подобное с synchronized, или мне нужно использовать java.util...Lock:
synchronized
java.util...Lock
public void outer() { synchronized(lock) { inner(); } } public void inner() { thing1(); release(lock) { result = doLongNetworkRequest(); } thing2(result); }
Вы можете использовать java.util.concurrent.locks. У них есть lock() и unlock()
java.util.concurrent.locks
lock()
unlock()
К сожалению, вы не можете разблокировать мониторы, удерживаемые во время синхронизированного блока. Вам придется использовать блокировку или два, чтобы делать то, что вы хотите.