腾讯架构师理解的并发编程基石——Thread类的工作原理

发布时间:2023-05-12 09:30

1. 开篇词

说到并发编程,可能大家脑海中的第一印象会是 Thread、多线程、JUC、线程池、ThreadLocal 等等内容。确实,并发编程是 Java 编程中不可或缺的一部分,掌握并发编程的核心技术,在求职面试中会是摧城拔寨的利器。而今天将要跟大家一起聊聊的是:并发编程的基石——Thread 类的工作原理。

事实上,在笔者回忆关于 Thread 类的核心 API 以及对应的线程状态转换关系时,总觉得印象有一些模糊,故此才有这篇文章。本文的核心议题是 Thread 类,由此延伸出诸多议题,例如:进程与线程、线程状态及生命周期、Thread API 的用法等等。

2. 进程与线程

首先,有必要介绍一下进程与线程,以及它们之间的区别与关系。

进程是操作系统分配资源的基本单位,比如我们在启动一个 main 此时就启动了一个 JVM 进程。

线程则是比进程纬度更小的单位,它是 CPU 分配的基本单位(因为真正占用运行的就是线程),比如启动一个 main 方法后它所在的线程就属于这个 JVM 进程的一个线程,它的名字叫主线程。一个进程可以有一个或多个线程,同一个进程中的各个线程之间共享进程的内存空间。

进程与线程之间的区别如下:

  • 进程是操作系统分配资源的最小单位,而线程是 CPU 分配(程序执行)的最小单位
  • 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
  • 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间
  • 调度和切换:线程上下文切换比进程上下文切换要快得多

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号