Ich bin nicht damit einverstanden, in Java Sprache müssen wir das Schloss halten, bevor wir eine Bedingung erwarten, um zufrieden zu sein.Warum Lock condition erwarten muss das Schloss halten
zum Beispiel int java Monitor lock:
synchronized(lock){
System.out.println("before lock ...");
lock.wait();
System.out.println("after lock ...");
}
oder die cucurrent utils.
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();
}
also, warum können wir nicht warten, ohne das Schloss zu halten?
Wenn das nur wegen Java, andere Sprache funktioniert anders?
Ich hoffe, Sie können den Grund nach dem Design erklären, aber nicht nur für JAVA-SPEC-Definition.
Java wird im Kontext einer virtuellen Maschine ausgeführt und das Verhalten der virtuellen Maschine wird angegeben. –
also, das ist wegen SPEC? – Chinaxing
Nun, natürlich ist es wegen der Spezifikation. Komische Frage. – EJP