为什么Synchronized在老版本的JDK中效率低


1.Synchronized和ReentrantLock相似点

提到Synchronized不得不提和ReentrantLock
二者相似点:
1.1:加锁方式同步,阻塞式同步。
1.2:都是独占锁,只允许线程互斥的访问临界区。
1.3:.ReentrantLock和synchronized都是可重入的。synchronized因为可重入因此可以放在被递归执行的方法上,且不用担心线程最后能否正确释放锁;而ReentrantLock在重入时要却确保重复获取锁的次数必须和重复释放锁的次数一样,否则可能导致其他线程无法获得该锁。

2.效率低的原因

核心原因:进行线程阻塞和唤醒的代价较高。
深层原因:线程的阻塞和唤醒,操作系统需要在用户态与内核态之间切换

2.1.用户态到内核态几种情况

2.1.1:系统调度

2.1.2:异常

2.1.3:外围设备的终端

2.2.用户态到内核态的过程

a)从当前进程的描述符中提取其内核栈的ss0及esp0信息
b)使用ss0及esp0指向内核栈,见当前进程的信息保存起来(也就是中断现场)
c)将先前由中断向量检索得到的中断处理程序的信息装入相应的寄存器,开始执行中断处理程序,这时就撞到了内和态的程序执行了(恢复现场)。

3.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值