1.6 多线程的基本原理

当我们通过new Thread().start()来启动一个线程时,底层到底做了什么呢?

如图1-5所示,笔者描述了在Java中从创建一个线程到最终执行的整体流程。

图1-5 线程从创建到最终执行的整体流程

当执行start()方法启动线程时,会先在JVM层面创建一个线程,JVM具有跨平台特性,它会根据当前操作系统的类型调用相关指令来创建线程并启动。

线程启动后,并不会立刻运行,而是要等到操作系统层面的CPU调度算法,把当前线程分配给某个CPU来执行。线程被分配执行后,会回调线程中的run()方法执行相关指令。