Synchronized优化前底层是线程挂起所以性能比较差,但ReentrantLock底层也是线程挂起为什么性能比较好呢
登陆购买课程后可参与讨论,去登陆吧
性能开销不在于线程挂起,而在于是否经历了用户态-内核态的切换。
Synchronized优化之前,是通过操作系统的互斥量实现锁的,会导致用户态-内核态的切换,这块开销很大,所以性能较差。
老师,那ReentrantLock锁挂起线程呢,会有上下文切换操作吗,如果有为什么会比Synchronized性能比较差
有啊,不过它是通过线程排队实现的。 线程切换并不是什么黑科技,线程本身也是个对象,你可以想象有个队列,然后取几个线程元素在消费。 ………… 但这个切换,是java层面去做的,不是操作系统层面做的,所以开销比较小,看下aqs的源码就知道啦。
我记得AQS操作线程好像是通过一个LockSupport工具类,具体实现可能我没有理解,谢谢老师解答
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
Java程序员进级架构师的核心技能图谱与最佳成长方案
262 4
78 10
82 26
45 21
61 38
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星