synchronized的原理是什么?

提问者:帅平 问题分类:面试刷题
synchronized的原理是什么?

 您阅读本篇文章共花了: 

1 个回答
刂阝余己忄已
刂阝余己忄已
通过反编译可以发现,当修饰方法时,编译器会生成 ACC_SYNCHRONIZED 关键字用来标识,当修饰代码块时,会依赖monitorenter和monitorexit指令,但前面已经说了,无论synchronized修饰的是方法还是代码块,对应的锁都是一个实例(对象),在内存中,对象一般由三部分组成,分别是对象头、对象实际数据和对齐填充,重点在于对象头,对象头又由几部分组成,但我们重点关注对象头Mark Word的信息就好了,Mark Word会记录对象关于锁的信息,又因为每个对象都会有一个与之对应的monitor对象,monitor对象中存储着当前持有锁的线程以及等待锁的线程队列。
发布于:1年前 (2023-03-16) IP属地:四川省
我来回答