无冥冥之志者,无昭昭之明;无惛惛之事者,无赫赫之功。
解释:没有专心致志地刻苦学习,就没有融会贯通的智慧;没有埋头执着的工作,就不会取得显著的成就。
前言
由于Java支持多线程,所以多线程安全问题一直是Java中的重中之重。Java通过锁机制来解决多线程操作引发的问题。
Java中的锁有非常多,基于这些锁,为了提高性能或者针对不同的场景,又出现了很多与锁相关的东西。
锁相关的面试内容
谈谈对volatile的理解?
volatile是什么?
volatile的作用?
volatile原理了解?
volatile可以保证原子操作吗?
volatile如何实现禁止指令重排序?
双重检验的单例模式实现中,使用volatile修饰单例对象的原因是?Synchronized
Synchronized是什么?
Synchronized的原理是什么?
Synchronized怎么用?可以修饰什么?
Synchronized可以保证原子操作吗?
Synchronized可以禁止指令重排序吗?
Synchronized会自动释放锁吗?
JDK1.5以后Synchronized做了哪些优化?
什么是偏向锁?
偏向锁的原理?
什么是轻量级锁?
轻量级锁的原理?
什么是重量级锁?
锁如何升级?
锁可以降级吗?如何降级?
Synchronized和volatile的区别?互斥锁与同步锁
什么是互斥锁?
什么是同步锁?
二者的差异?什么是CAS操作?
Lock锁
什么是Lock锁?
Lock锁的实现原理?
Lock锁有哪些子类?
Lock锁如何使用? Lock锁会自动释放锁吗? Lock锁和Synchronized的区别? 发生异常时,Lock锁和Synchronized的区别?公平锁与非公平锁 什么是公平锁?
公平锁的实现原理?
什么是非公平锁?
非公平锁的实现原理
公平锁与非公平锁的性能比较?
Synchronized是公平锁吗?
Lock是公平锁吗?
- 悲观锁与乐观锁
什么是悲观锁?
什么是乐观锁?
Synchronized是悲观锁还是乐观锁?
Lock锁是悲观锁还是乐观锁?
- 读写锁
可以并发访问读锁吗
可以并发访问写锁吗?
访问读锁前需要进行什么操作?