Sono dubbioso che, in linguaggio Java, abbiamo bisogno di tenere il blocco, prima di attendere qualche condizione per essere soddisfatti.Perché le condizioni di blocco attendono devono tenere il blocco
per esempio, int blocco del monitor java:
synchronized(lock){
System.out.println("before lock ...");
lock.wait();
System.out.println("after lock ...");
}
oi utils cucurrent.
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();
}
quindi, perché non possiamo attendere, senza tenere il lucchetto?
se questo solo a causa di Java, le altre lingue funzionano diversamente?
Spero che tu possa spiegare il motivo dopo la progettazione, ma non solo per la definizione di JAVA-SPEC.
Java viene eseguito nel contesto di una macchina virtuale e viene specificato il comportamento della macchina virtuale. –
quindi, questo è dovuto a SPEC? – Chinaxing
Beh, certo, è a causa della specificazione. Strana domanda. – EJP