栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

为什么线程唤醒和阻塞的代价大?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么线程唤醒和阻塞的代价大?

Java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在用户态和核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内存态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值,变量等,以便内核态调用结束后切换会用户态继续工作。
1.如果高频进行线程的切换操作,将消耗许多CPU的处理时间
2.如果对那些需要同步的简单的代码块,获取锁挂起操作消耗的时间比用户代码执行的时间还要长,这种同步策略显然是糟糕的。
synchronized会导致争不到锁的线程进入阻塞状态,所以它是重量级锁。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/967435.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号