1、Locks包 类层次结构
如下图:
1.1 RenntrantLock
其是可重入锁如下图所示:
运行上图的代码可以知道可以不断锁住没有释放,结果就是线程锁没添加一个lock()数量就多一个。
2、Lock接口方法
如下图:
3、synchronized和Lock的比较
synchronized
优点:1、使用简单,语义清晰,哪里需要点哪里
2、由JVM提供,提供了多种优化方案(锁粗化、偏向锁、轻量锁)
3、锁的释放由虚拟机完成,不用人工干预,也降低了死锁的可能性
缺点:无法实现一些锁的高级功能如:公平锁、中断锁、超时锁、共享锁等
Lock
-优点:1、所有synchronized的缺点 、
2、可以实现更多的功能,如让synchronized的缺点更多
-缺点:需要手动释放锁unlock,新手使用不当可能造成死锁