哪些操作可能导致线程上下文切换?
作者:互联网
1、自发性上下文切换-主要由Java程序导致,让程序中执行一下操作的时候会导致线程自发上下文切换 sleep()、wait()、yield()、join()、park()、synchronized、lock等。
2、非自发性上下文切换一般由于线程时间片用完、虚拟机垃圾回收(STW)导致线程暂停、线程优先级导致等。
3、线程上下文切换的检测方式: vmstat 查看Java程序系统上下文切换频率, pidstat 监控指定进程上下文切换。
4、线程越多,速度不一定越快,一般简单逻辑,执行速度快使用单线程。逻辑相对复杂并且等待时间长、需要大量计算的时候,例如NIO文件读写、图像处理、大数据分析等推荐使用多线程处理。
5、多线程中使用Synchronized 会发生线程上下文切换和进程上下文切换
参考文档:Java线程的6种状态及切换(透彻讲解)_诚-CSDN博客_java 线程状态
标签:导致,多线程,Java,线程,切换,上下文 来源: https://blog.csdn.net/u014230945/article/details/121449995