哪些 *** 作可能导致线程上下文切换?

哪些 *** 作可能导致线程上下文切换?,第1张

哪些 *** 作可能导致线程上下文切换

1、自发性上下文切换-主要由Java程序导致,让程序中执行一下 *** 作的时候会导致线程自发上下文切换 sleep()、wait()、yield()、join()、park()、synchronized、lock等。

2、非自发性上下文切换一般由于线程时间片用完、虚拟机垃圾回收(STW)导致线程暂停、线程优先级导致等。

3、线程上下文切换的检测方式: vmstat 查看Java程序系统上下文切换频率, pidstat 监控指定进程上下文切换。

4、线程越多,速度不一定越快,一般简单逻辑,执行速度快使用单线程。逻辑相对复杂并且等待时间长、需要大量计算的时候,例如NIO文件读写、图像处理、大数据分析等推荐使用多线程处理。

5、多线程中使用Synchronized 会发生线程上下文切换和进程上下文切换 

参考文档:Java线程的6种状态及切换(透彻讲解)_诚-CSDN博客_java 线程状态

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5575203.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存