并发编程面试
1、synchronized用过吗,其原理是什么
这是一道Java面试中几乎百分之百都会问到的题目,如果没有参与过并发编程的话,对其是说不上来的。synchronized是由JVM实现的一种实现互斥同步的方式。
Synchronized是由JVM实现的一种实现互斥同步的一种方式,如果你查看被Synchronized修饰过的程序块编译后的字节码,会发现,被Synchronized修饰过的程序块,在编译前后被编译器生成了monitorenter和monitorexit两个字节码指令。
在虛拟机执行到monitorenter指令时,首先要尝试获取对象的锁:
- 如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1;
- 当执行 monitorexit指令时将锁计数器-1;
- 当计数器为O时,锁就被释放