重量级锁 synchronized(不看后悔,看了必懂)

版权声明:本文为博主原创文章,未经博主允许可以转载。 https://blog.csdn.net/qq_36071795/article/details/83818331

synchronized关键字并非一开始就该对象加上重量级锁,也是从偏向锁,轻量级锁,再到重量级锁的过程。这个过程也告诉我们,假如我们一开始就知道某个同步代码块的竞争很激烈、很慢的话,那么我们一开始就应该使用重量级锁了,从而省掉一些锁转换的开销。

互斥锁(重量级锁)也称为阻塞同步、悲观锁

重量级锁是依赖对象内部的monitor锁来实现的,而monitor又依赖操作系统的MutexLock(互斥锁)来实现的,所以重量级锁也称为互斥锁

为什么重量级线程开销很大的?

当系统检查到锁是重量级锁之后,会把等待想要获得锁的线程进行阻塞,被阻塞的线程不会消耗cpu。但是阻塞或者唤醒一个线程时,都需要操作系统来帮忙,这就需要从用户态转换到内核态,而转换状态是需要消耗很多时间的,有可能比用户执行代码的时间还要长。

猜你喜欢

转载自blog.csdn.net/qq_36071795/article/details/83818331
今日推荐