【并发编程挑战】上下文切换

 2019-10-29 09:17  阅读(2877)
文章分类:Java 并发编程

文章首发于:[clawhub.club][] -------------------- 上下文切换(有时也称做进程切换或任务切换)是指 CPU 从一个进程或线程切换到另一个进程或线程。上下文切换会影响多线程执行速度。 #### 上下文定义 #### cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。 #### 引发问题 #### 对于CPU密集型任务,多线程处理会发生上下文切换,会影响到执行速度,如果时IO密集型,多线程技术优点尽显。 #### 如何减少上下文切换 #### * 无锁并发编程,锁的获取与释放会发生上下文切换,多线程时会影响效率。无锁并发编程就是将数据分块,每个线程处理各自模块。比如LongAdder中部分代码。 * CAS算法,并发编程时通过CAS算法更新数据,而不必加锁。如Java的atomic包下的工具类。 * 使用最少线程,减少不必要的线程创建,自定义线程池。 * 使用协程,在单线程中维护多任务调度,处理任务间切换,Golang对于协程的使用貌似很强大。 [clawhub.club]: https://links.jianshu.com/go?to=https%3A%2F%2Fwww.clawhub.club ------- 来源:[https://www.jianshu.com/p/347ea7f881f8](https://www.jianshu.com/p/347ea7f881f8)

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> 【并发编程挑战】上下文切换

相关推荐