并发 · 单选题 · 第 15 题
Java 后端开发面试 · 第 15 题
synchronized 修饰一个静态方法时,锁住的是?
- A当前实例对象 this
- B方法所在的栈帧
- C不加任何锁
- D该类的 Class 对象
答案
D D. 该类的 Class 对象
解析
静态方法属于类,锁对象就是这个类的 Class 对象,所有实例共用同一把锁。修饰实例方法时锁的是 this,两者不是同一把锁,所以一个线程执行静态同步方法时,另一个线程仍可以执行实例同步方法。同步代码块锁的是括号里显式指定的对象。