为什么锁定条件等待必须保持锁定
我对此表示怀疑,在Java语言中,我们需要在等待某些条件得到满足之前获取锁。
例如,int java monitor lock:
synchronized(lock){
System.out.println("before lock ...");
lock.wait();
System.out.println("after lock ...");
}
或并发实用程序:
Lock lock = new ReentrantLock();
Condition cond = lock.newCondition();
lock.lock();
try{
System.out.println("before condition ...");
cond.await();
System.out.println("after condition ...");
}catch(Exception e){
e.printStackTrace();
}finally{
lock.unlock();
}
那么,为什么我们不能等待,而不守住锁?
其他语言是否不同,或者只是在Java中?
希望大家在设计之后能解释原因,但不仅仅是为了JAVA-SPEC的定义。