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

多线程竞争锁,为什么会引起上下文切换?

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

多线程竞争锁,为什么会引起上下文切换?

多线程竞争锁,为什么会引起上下文切换?

在多线程并发的情况下,线程竞争锁,那么就不可避免的会产生阻塞,一旦产生阻塞,该线程就处于wating状态。那么该线程放弃CPU的使用权,那么在切换至下一个任务或者线程时,需要保存该线程的状态和一些环境信息。
所以在多线程并发下,多线程竞争锁,会引起上下文切换。
频繁的上下文切换,会导致系统的开销就越大,所以尽量使用一些方法来减少上下文的切换。

如何减少上下文的切换?
  • 无锁并发编程。
    多线程竞争锁时,会引起上下文切换、所以多线程在处理数据时,可以用一些方法来避免使用锁。如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。
  • CAS算法
    Java的Atomic包使用CAS算法来更新数据,而不需要加锁。
  • 使用最少线程
    避免创建不需要的线程,比如任务很少,但是创建了很多的线程来处理,这样会造成大量的线程都处于等待状态。
  • 协程
    在单线程里实现多任务的调度,并在单线程里维持多人任务间的切换。

Java并发编程的艺术

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

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

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