基础知识:加锁一般来说都是必须对一个对象进行加锁的。
实现的底层原理是什么?
两个指令:monitorenter \ monitorexit
答:每个对象都有一个monitor,如果要加锁,就必须先对对象关联的monitor进行获取,然后进行加锁。Monitor是有一个计数器,最开始等于0,现在如果有一个线程进入了,那么这个时候就设置为1,如果该线程再次进行加锁,则设置为计数器为2,以此类推。
如果执行完代码片段之后,则执行指令monitorexit,将计数器设置为0,这个其他的线程就可以继续进入进行加锁。