【大厂真题】并发编程面试集合(一)

1、synchronized用过吗,其原理是什么

这是一道Java面试中几乎百分之百都会问到的题目,如果没有参与过并发编程的话,对其是说不上来的。synchronized是由JVM实现的一种实现互斥同步的方式

Synchronized是由JVM实现的一种实现互斥同步的一种方式,如果你查看被Synchronized修饰过的程序块编译后的字节码,会发现,被Synchronized修饰过的程序块,在编译前后被编译器生成了monitorenter和monitorexit两个字节码指令。

在虛拟机执行到monitorenter指令时,首先要尝试获取对象的锁:

  • 如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1;
  • 当执行 monitorexit指令时将锁计数器-1;
  • 当计数器为O时,锁就被释放

猜你喜欢

转载自blog.csdn.net/weixin_44427181/article/details/129261105