Java线程何时放弃CPU时间片

跟着作者的65节课彻底搞懂Java并发原理专栏,一步步彻底搞懂Java并发原理。

作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书、写作和运动,擅长篮球、跑步、游泳、健身和羽毛球等运动项目。崇尚开源,崇尚技术自由,更崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《人工智能原理科普》。

线程与CPU执行

Java中内置支持在一个进程中运行多个线程,线程的执行由JVM进行管理。每个线程从启动到结束的过程中可能经历多种状态,多个线程则意味着并发,而并发则涉及CPU的执行时间片。下图是三个线程分配到的CPU执行时间示意图,从启动到结束三个线程除了真正执行阶段,还包含了等待阶段。

Java线程何时放弃CPU时间片_第1张图片

执行时间

一个线程从启动到结束过程总,有两个时间概念我们要理解。其一是CPU时间,即线程真正执行的时间。其二是总消耗时间,即真正执行的时间加上等待的时间。如下图可以很清晰看到这两者的关系,P1得到了多个CPU执行时间,而总消耗时间则包括P1执行期间CPU分配给其它线程执行的时间,所以总消耗时间总是大于等于CPU时间。

Java线程何时放弃CPU时间片_第2张图片

你可能感兴趣的:(Java线程何时放弃CPU时间片)