從Java併發Pactice爲什麼Java對象可以像鎖和條件隊列一樣工作?
每個Java對象可以隱含充當用於同步目的的鎖定;這些內置的鎖稱爲內部鎖或鎖監視器。
什麼是「每個Java對象都可以隱式作爲鎖?」是什麼意思?
這是否意味着每個Java對象的類實現Lock
接口如下?
public interface Lock {
void lock();
void lockInterruptibly() throws InterruptedException;
boolean tryLock();
boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException;
void unlock();
Condition newCondition();
}
這是否意味着每類Java對象提供了一些方法,使物體的行爲就像一把鎖,鴨打字的感覺?
正如每個Java對象可以作爲一個鎖作用,每個對象也可以 充當條件隊列,和等待,通知,以及對象notifyAll的 方法構成了內在條件隊列API。
「每個對象還可以充當條件隊列」是什麼意思?
這是否意味着類中的每個Java對象
- 的實現了一些「條件隊列」界面,或
- 提供了一些方法,使物體的行爲像鴨打字意義上的條件隊列?
謝謝。
「這是否意味着每個Java對象的類都實現瞭如下的Lock接口?」不,它意味着任何對象都可以用作'synchronized(表達式){...}'中的表達式。 –
謝謝。 'synchronized'是什麼類型的對象在圓括號中? – Ben
[任何引用類型](https://docs.oracle.com/javase/specs/jls/se9/html/jls-14.html#jls-14.19)。這纔是重點。 –