在学习大多数java教程时,他们提到线程是轻量级进程。我知道线程创建过程中发生了什么,但我没有得到线程的定义。在stackoverflow的大部分时间里也回答了这个问题。但这也让我感到困惑。无法了解"轻量级过程"背后的真实想法。有人能用最简单的方法解释"线程是轻量级过程"的含义吗?
一个进程有不同的内存区域。根据操作系统的不同,有些可能被分组、不存在,甚至被细分:
- 代码
- 内存(用于变量)
- 烟囱
- 堆(用于动态分配)
当您创建一个新流程时,系统必须分配所有这些。对于一个线程,只分配一个新堆栈,内存上的头对于同一进程的所有线程都是公共的。
您可以这样调用它,因为线程和进程一样,是一种具有并行、并发执行流的方式。但与进程相反,一个线程与同一进程中的其他线程共享相同的内存,而不是拥有完全独立的内存。
我想这一解释源于父进程生成的线程在内存中使用相同的地址空间。另一方面,每个进程都有自己的地址空间。基于这个事实,进程的上下文切换比线程的上下文切换要重得多。