使用synchronized
是可以的,或者我需要使用java.util...Lock
:
public void outer() {
synchronized(lock) {
inner();
}
}
public void inner() {
thing1();
release(lock) {
result = doLongNetworkRequest();
}
thing2(result);
}
答案 0 :(得分:6)
您可以使用java.util.concurrent.locks
。他们有lock()
和unlock()
答案 1 :(得分:2)
不幸的是,您无法释放同步块中保存的监视器。你必须使用一把或两把锁来做你想做的事。