首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

Lock接口和ReentrantLock类,该如何解决

2012-03-26 
Lock接口和ReentrantLock类今天看见一个程序,如下:public static class Account{private static Lock lock

Lock接口和ReentrantLock类
今天看见一个程序,如下:
public static class Account
{
  private static Lock lock = new ReentrantLock(); //代码1
  private int balance = 0;
}
在后面的程序中,有这样的语句:lock.lock();
我看了一下Lock接口的内容,有一个抽象方法: void lock();
然后我就糊涂了,ReentrantLock类是接口Lock接口的实现,把ReentrantLock类的实例lock申明为接口类型。可接口里lock()方法并没有实现部分,lock.lock()怎么能执行方法呢?
另外,在ReentrantLock类有个内部静态类
final static class NonfairSync 其中有个这么一个方法:
final void lock()
{
  实现部分(略)
}
既然ReentrantLock类里面就有lock()方法和实现部分,为什么代码1不这么写:
private static ReentrantLock lock = new ReentrantLock();

[解决办法]
List是接口,ArrayList是他的实现类。
但是我们通常都这样写:

List list = new ArrayList();
一个道理

热点排行