轻量级锁轻在哪里?重量级锁重在哪里?
重量级锁:我们知道,当要进入一个同步、线程安全的方法时,是需要先获得这个方法的锁的,退出这个方法时,则会释放锁。如果获取不到这个锁的话,意味着有别的线程在执行这个方法,这时我们就会马上进入阻塞的状态,等待服务器托管网那个持有锁的线程释放锁,然后再把我们从阻塞的状态唤醒,我们再去获取这个方法的锁。这种获取不到锁就马上进入阻塞状态的锁,我们称之为重量级锁。服务器托管网重点在于获取不到锁的线程,会一直处在等待状态,什么东西都做不了
- 优点:线程竞争不使用自旋,不会消耗CPU。
- 缺点:线程阻塞,响应时间缓慢。
轻量级锁:一般都是用自旋锁+CAS来实现的,我们可以定义自选的次数,到达这个次数后,我们就退出,不抢这个锁了,然后走对应的逻辑
- 优点:竞争的线程不会阻塞,提高了程序的响应速度。
- 缺点:如果始终得不到锁竞争的线程使用自旋会消耗CPU,因为执行CAS原语是要靠CPU的。
对比一下重量级锁和轻量级锁,可以得知一般情况下 重量级锁 比 轻量级锁 的 工作量更大 、消耗资源更多 并且 锁更慢。这也就是轻重之分。
不过并不是轻量级锁一定比重量级锁快
当线程数很多时,使用轻量级锁,就会加大某一个线程一直自选的概率,浪费时间和CPU资源。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net