Я сомневаюсь, что в языке Java нам нужно получить блокировку, прежде чем мы ожидаем выполнения какого-либо условия.
Например, блокировка монитора Int Java:
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.