Tôi nghi ngờ rằng, trong ngôn ngữ Java, chúng ta cần giữ khóa, trước khi chúng tôi chờ đợi một số điều kiện để được thỏa mãn.Tại sao điều kiện Khóa chờ đợi phải giữ khóa
ví dụ, int khóa màn hình java:
synchronized(lock){
System.out.println("before lock ...");
lock.wait();
System.out.println("after lock ...");
}
hoặc 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();
}
vậy, tại sao chúng ta không thể chờ đợi, mà không giữ khóa?
nếu điều đó chỉ vì Java, các công trình ngôn ngữ khác sẽ khác nhau?
Tôi hy vọng bạn có thể giải thích lý do sau khi thiết kế, nhưng không chỉ cho định nghĩa JAVA-SPEC.
Java chạy trong ngữ cảnh của máy ảo và hành vi của máy ảo được chỉ định. –
vì vậy, đó là vì SPEC? – Chinaxing
Tất nhiên, đó là vì sự xác định. Câu hỏi lạ. – EJP