[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等其他调试工具来看到线程。

相关推荐
唐青枫17 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马18 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户37215742613519 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户37215742613519 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454751 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜2 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫2 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq2 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮2 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js