发布时间:2023-05-12 09:30
说到并发编程,可能大家脑海中的第一印象会是 Thread、多线程、JUC、线程池、ThreadLocal 等等内容。确实,并发编程是 Java 编程中不可或缺的一部分,掌握并发编程的核心技术,在求职面试中会是摧城拔寨的利器。而今天将要跟大家一起聊聊的是:并发编程的基石——Thread 类的工作原理。
事实上,在笔者回忆关于 Thread 类的核心 API 以及对应的线程状态转换关系时,总觉得印象有一些模糊,故此才有这篇文章。本文的核心议题是 Thread 类,由此延伸出诸多议题,例如:进程与线程、线程状态及生命周期、Thread API 的用法等等。
首先,有必要介绍一下进程与线程,以及它们之间的区别与关系。
进程是操作系统分配资源的基本单位,比如我们在启动一个 main 此时就启动了一个 JVM 进程。
而线程则是比进程纬度更小的单位,它是 CPU 分配的基本单位(因为真正占用运行的就是线程),比如启动一个 main 方法后它所在的线程就属于这个 JVM 进程的一个线程,它的名字叫主线程。一个进程可以有一个或多个线程,同一个进程中的各个线程之间共享进程的内存空间。
进程与线程之间的区别如下: