记得刚开始学JAVA的时候,在并发这一块最薄弱,只能做一些简单的多线程使用和对锁的使用,在其底层压根就没考虑过,最近抽空买了本JAVA并发编程艺术,要仔细认真的学习下。
一次上下文切换就是任务从保存到再加载的过程,因为处理器支持多线程执行代码的通过给每个线程分配CPU时间片来实现的,因为时间片非常短,所以CPU不停的切换线程执行,让我们感觉多个线程是同时执行的。 CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到像任务。在切换前会保存上一个任务的状态,在下次切回这个任务时,再加载这个任务状态。 在并发执行操作没达到数量时,并发执行速度会比串行执行速度要慢。这是因为线程又上下文切换的开销
减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。