[JavaEE初阶] 进程和线程的区别和联系

1.什么是进程

进程是计算机中正在运行的程序的实例,包含程序代码、数据和系统资源(如内存、CPU时间)的集合。

打开资源管理器,我们就可以看到此时此刻运行在计算机上面的进程。

然而,进程是一个相对而言比较重的概念,进程的创建和销毁的开销比较大,对于我们每个人的计算机来说,可能觉得我打开和关闭一个进程是几秒钟的事情,并没有感觉到开销很大,但是对于服务器来说就不一样了。什么是服务器呢?打个比方,服务器就像餐馆,而我们的客户端就像是来餐馆吃饭的客人。客户端对服务器发出请求,而服务器就会响应客户端发出的请求。就好比你去餐馆发出吃饭的请求,而餐馆就会响应你的请求来做饭。

在90年代的时候,每个客户端向服务器发出请求,服务器就会提供一个进程为客户端进行服务。但随着时代的发展,计算机逐渐走入千家万户,客户端对服务器的请求越来越频繁,而进程创建和销毁开销大的缺点被逐渐放大。为了解决这个问题,我们引入了线程(Thread),可以简单理解为轻量级进程,即创建和销毁开销更小的进程。

2.什么是线程

线程是操作系统能够调度的最小执行单位,属于同一进程的多个线程共享内存和资源,但各自拥有独立的执行路径。

每个进程可以看做成一个要执行的任务,而每个线程也是一个要执行的任务,即运行的一段代码指令。我们可以简单地认为进程是大任务,而线程则是大任务中细分的小任务。

3. 进程和线程的区别

进程是操作系统资源分配的基本单位,而线程则是CPU上调度执行的基本单位。

首先谈谈进程是操作系统资源分配的基本单位。操作系统的资源主要包括CPU、内存、硬盘资源、网络带宽等。进程的创建和销毁需要申请和释放资源,这是开销很大的操作。而线程则会共享这些资源,只有在第一个线程创建的时候会和进程一起申请资源,后续创建线程直接用申请的资源就行,当所有线程销毁时,进程也销毁,然后释放资源。

再来说线程则是CPU上调度执行的基本单位。CPU就好比舞台,每个线程就是演员,每个线程都有上CPU的机会。比如说进程里面有线程a、b、c,有可能a去CPU核心1上执行,b去CPU核心2上执行,c去CPU核心3上执行,这就是并行。也有可能线程a、b、c都在同一个核心上来回切换执行,这就是并发。也有可能a、b在一个核心上来回切换,c在另外一个核心上执行。这些线程的调度执行都是由操作系统随机调度的,我们程序员无法感知和干预。

4.进程和线程的联系

进程包含线程,每个进程中都会包含一个或者多个线程。在Windows的任务管理器中,我们看不到进程内部的线程,但可以借助VS的调试器、Windbg等其他调试工具来看到线程。

相关推荐
沐知全栈开发2 小时前
TypeScript Array(数组)
开发语言
苏小瀚2 小时前
[算法]---分治-快排和归并
java·算法·leetcode
陶陶name2 小时前
Metal Compute Pipeline:Metal-C++ 环境配置与简单算子实现
开发语言·c++
认真敲代码的小火龙2 小时前
【JAVA项目】基于JAVA的宿舍管理系统
java·开发语言·课程设计
无限进步_2 小时前
寻找数组中缺失数字:多种算法详解与比较
c语言·开发语言·数据结构·算法·排序算法·visual studio
lsx2024062 小时前
C 标准库 - <assert.h>
开发语言
invicinble2 小时前
关于maven的全域理解
java·spring boot·maven
Wzx1980122 小时前
go接受输入方式
开发语言·后端·golang
黑马源码库miui520862 小时前
JAVA成人用品商城系统源码微信小程序+h5+安卓+ios
android·java·微信小程序