java, 继承与倚赖ReentrantLock, 在使用方法上的区别
阅读
最近在看guava的cache源码, 发现LocalCache.Segment类是继承ReentrantLock.
但是我看Segment只用到了lock,unlock,isHeldByCurrentThread 三个方法,
这三个方法都是public的,就是说如果用依赖的方式,这几个方法都可以调用到的.
又查了一下ReentrantLock 的子类, 发现子类包括有: java.util.concurrent.ConcurrentHashMap.Segment
那么为什么不使用依赖(ReentrantLock lock= new ReentrantLock()), 而是用继承呢??
或者说在什么情况下能体现出继承的好处?
------解决方案--------------------
This subclass inherits from ReentrantLock
opportunistically, just to simplify some locking and avoid separate construction.
java doc 已经说的蛮明白的
这里投机的继承了ReentrantLock,仅仅想简单化一些锁的操作和 避免单独再去构建锁的逻辑了。
因为subclass segment需要用到重入所的一些功能,又不想自己再去实现。所以投机了使用了ReentrantLock原有的功能。
阅读