java多线程 上下文切换

Posted 散漫的烟灰

tags:

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

 

什么是上下文:

  cpu会为每个线程分配一个时间片,这个时间片是非常短的,毫秒级别的,cup不断的切换线程执行任务时,会记录这个任务的状态,下次切换回来时,可以通过这个状态继续执行任务,让我们感觉有多个程序在运行

 

比如  我们在看java核心思想看到100页,然后想到80页有相关的内容,返回80查看完后,我们大脑记住了看到了100页,但如多数量多了,记着就吃力了, 频繁的切换会带来一定的性能开销.

怎么避免上下文切换:

无锁必发编程:在处理多线程时可以使用一些方法来避免使用锁机制,比如可以用任务的id进行hash取模分段, 不同的线程处理不同数据.

避免使用多余的线程:在任务量少的时候,没必要去开很多的线程,这样会使大量的线程被挂起等待

可以使用CAS算法来避免一些锁机制

 

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

Day791.多线程上下文切换优化方案 -Java 性能调优实战

Java线程的上下文切换与线程状态

多线程上下文切换

Java线程的上下文切换与线程状态

多线程上下文切换

多线程上下文切换优化与注意