跟着作者的65节课彻底搞懂Java并发原理专栏,一步步彻底搞懂Java并发原理。
作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书写作、运动、画画。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。
时间片
实际上yield操作语义在不同的操作系统里面的实现机制可能不一样,我们以基于时间片的线程调度器为例,去理解yield语义表示的意思。在讨论yield之前我们必须先了解时间片这个概念,时间片是指在抢占式操作系统中线程或进程在被抢占前所能持续运行的时间,通俗地说就是每个线程轮流分配到的CPU执行时间。每个线程或进程都执行一定的时间,然后再切换到另一个线程或进程去执行一定的时间,这就是并发。比如下图中,假设只有一个CPU并发地执行三个线程任务,线程一先执行一会,然后轮到线程二,然后再到线程三,不断继续下去。时间片的长短由操作系统控制,它可能与线程优先级相关。时间片太长会导致并发效果差,影响系统的交互表现。反之,如果时间片太短又会带来大量的切换成本从而浪费CPU,而真正用在线程或进程的时间片却很少。