说说Java“锁”事
从轻松的乐观锁和悲观锁开讲
通过8种情况演示锁运行案例,看看我们到底锁的是什么
公平锁和非公平锁
可重入锁(又名递归锁)
死锁及排查
写锁(独占锁)/读锁(共享锁)
自旋锁SpinLock
无锁->独占锁->读写锁->邮戳锁
无锁->偏向锁->轻量锁->重量锁
大厂面试题复盘
并发编程高级面试解析
一、Synchronized相关问题
1、Synchronized用过吗,其原理是什么?
2、你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
3、什么是可重入性,为什么说Synchronized是可重入锁?
4、JVM对Java的原生锁做了哪些优化?
5、为什么说Synchronized是非公平锁?
6、什么是锁消除和锁粗化?
7、为什么说Synchronized是一个悲观锁?乐观锁的实现原理又是什么?什么是CAS,它有
8、乐观锁一定就是好的吗?
二、可重入锁ReentrantLock及其他显示锁相关问题
1、跟Synchronized相比,可重入锁ReentrantLock其实现原理有什么不同?
2、那么请谈谈AQS框架是怎么回事儿?
3、请尽可能详尽地对比下Synchronized和ReentrantLock的异同。
4、ReentrantLock是如何实现可重入性的?
1、你怎么理解java多线程的?怎么处理并发?线程池有那几个核心参数?
2、Java加锁有哪几种锁?我先说了synchronized,刚讲到偏向锁,他就不让我讲了
3、简单说说lock
4、hashmap的实现原理?hash冲突怎么解决?为什么使用红黑树?
5、spring里面都使用了哪些设计模式?循环依赖怎么解决?
6、项目中哪个地方用了countdownlatch,怎么使用的?
悲观锁:认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改
synchronized关键字和Lock的实现类都是悲观锁