从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)。这才是重点。 –