【大厂真题】并发编程面试集合(一)
并发编程面试
- 1、synchronized用过吗,其原理是什么
- 2、你刚才提到获取对象的锁,这个锁是什么?如何确定对象的锁?
- 3、什么是可重入性?为什么说synchronized是可重入锁?
- 4、Java中的线程池是如何实现的?
- 5、如何在java线程池中提交线程?
1、synchronized用过吗,其原理是什么
这是一道Java面试中几乎百分之百都会问到的题目,如果没有参与过并发编程的话,对其是说不上来的。synchronized是由JVM实现的一种实现互斥同步的方式。
Synchronized是由JVM实现的一种实现互斥同步的一种方式,如果你查看被Synchronized修饰过的程序块编译后的字节码,会发现,被Synchronized修饰过的程序块,在编译前后被编译器生成了monitorenter和monitorexit两个字节码指令。
在虛拟机执行到monitorenter指令时,首先要尝试获取对象的锁:
- 如果这个对象没有锁定,或者当前线程已经拥有了这个对象的锁,把锁的计数器+1;
- 当执行 monitorexit指令时将锁计数器-1;
- 当计数器为O时,
还没有评论,来说两句吧...