有一个问题,Lock lock = new ReentrantLock();这句代码是返回Lock实例,那么lock.lock();这句代码,则是调用类ReentrantLock中的lock()。同理,lock.unlock();也是调用类ReentrantLock中的unlock()。因为Lock是接口,接口中的方法是抽象方法,是没有函数体的。但是new ReentrantLock();实现了Lock接口,所以就实现了Lock接口中所有方法,所以调用的是类ReentrantLock中的lock()。
但是,代码Condition producer_con = lock.newCondition();
Condition consumer_con = lock.newCondition();
lock.newCondition();这句代码返回Condition,这个我知道。那么,在下面的代码中,producer_con.await();调用的是接口Condition中的await方法,但是Condition接口中的方法没有实现,这样调用没有错吗???难道是哪里实现了Condition接口中的方法吗???难道producer_con.await();调用的不是接口Condition中的await方法???请大神帮忙看一下。
cousumer_con.await();同理。
|