线程上下文切换(Thread Context Switch)

Posted 杀手不太冷!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程上下文切换(Thread Context Switch)相关的知识,希望对你有一定的参考价值。

线程上下文切换(Thread Context Switch)

因为以下一些原因导致cpu不再执行当前的线程,转而执行另一个线程的代码。

发生的原因,有如下几个:

1.线程的cpu时间片用完

2.垃圾回收

3.有更高优先级的线程需要运行,

4.线程自己调用了sleep,yield,wait,join,park,sychronized,lock等方法

当Context Switch发生时,需要由操作系统保存当前线程的状态,并恢复另一个线程的状态,Java中对应的概念就是程序计数器(Program Counter Register),它的作用是记住下一条jvm指令的地址,是线程私有的。

状态包括程序计数器,虚拟机栈中每个栈帧的信息,如局部变量,操作数栈,返回地址等

Context Switch频繁发生会影响性能

以上是关于线程上下文切换(Thread Context Switch)的主要内容,如果未能解决你的问题,请参考以下文章

Context Switches上下文切换性能详解

使用 SIGALRM 切换线程上下文

Thread类的使用

Java并发编程-Thread类的使用

Linux性能分析-CPU上下文切换

多线程上下文切换