原文代码位于:Java API 1.6 中的 java.util.concurrent.locks中。大家在学到“多线程通信时”也许会遇到。
代码如下:
final Lock lock = new ReentrantLock();
final Condition notFull = lock.newCondition();
final Condition notEmpty = lock.newCondition();
其中,Lock 和 Condition都是接口类型。我们知道接口类不可以创建对象。那么怎么解释第二行和第三行代码呢。
第一行代码是:多态,这个好理解。
查文档得出:Lock有一个返回值类型为Condition的方法:newCondition,返回绑定到此lock的Condition对象。这一句话我们可以得出两个结论:1.接口类可以作为返回值类型(之前百度上有一些人在疑惑这个问题);2.接口虽然不可以创建实例对象,但是是不允许用 new 这种方法建立;而此处为lock下的newCondition方法。
因为这个问题困扰了一个晚上,分享给大家,如果我的理解出现了偏差,还希望大家能指出来。 |