2 qq 32012879 qq_32012879 于 2017.09.10 21:26 提问

java接口与多线程的问题

public class ThreadPool {
Lock lock = new ReentrantLock();//为什么要用这种形式
ReentrantLock ren=new ReentrantLock();//这样写有什么不一样吗?
}

3个回答

Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.09.11 13:09
已采纳
 Lock lock = new ReentrantLock();//为什么要用这种形式
ReentrantLock ren=new ReentrantLock();//这样写有什么不一样吗?

在你这里可能不一样,,

假如入又有一个实现类,, ReentrantLock2,,,

Lock lock,,声明的还可以调用,,,
ReentrantLock ren,,这个就需要换很多了,,

依赖倒置原则

qq_32012879
qq_32012879 抱歉过这么久才采纳,之前我21点发的问题,被吞了,就去其他网站提问了。。
大约 2 个月之前 回复
zy841958835
zy841958835   Ds   Rxr 2017.09.11 08:59

这里就涉及到另一个问题 为什么会有接口这种数据结构
1.定义一个公共的结构 一种数据标准
2.间接的实现多继承

回到你这个问题 就是lock的实现类可以是ReentrantLock也可以是Lock接口的其他实现类

oyljerry
oyljerry   Ds   Rxr 2017.09.11 10:55

ReentrantLock 是Lock的子类,第一种用法是多态的方式,一般用基类指针具体的子类,这样在函数参数的时候,可以用基类类型做参数等。
可以更灵活,当以后你想换另一种锁类型的时候, 只需要修改

 Lock lock = new ReadWriteLock();
Csdn user default icon
上传中...
上传图片
插入图片