一、对象锁和类锁
给对象加锁(可以理解为给这个对象的内存上锁,注意只是这块内存,其他同类对象都会有各自的内存锁),这时候在其他一个以上线程中执行该对象的这个同步方法就会产生互斥。
相当于在类上加锁(*.class 位于代码区,静态方法位于静态区域,这个类产生的对象公用这个静态方法,所以这块内存,N个对象来竞争),这时候只要是这个类产生的对象,在调用这个静态方法时都会产生互斥。
二、锁粗化和锁消除
很多次锁的请求合并成一个请求,以降低短时间内大量锁请求、同步、释放带来的性能损耗。
锁消除是发生在编译器级别的一种锁优化方式。
网友评论