news 2026/8/24 5:03:47

JavaEE进程与线程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaEE进程与线程

1.操作系统

操作系统是管理计算机硬件、给应用程序提供服务的系统软件,是硬件和应用软件之间的中间层。

操作系统主要两个功能:

1)资源管理:管理计算机全部软硬件资源(CPU、内存、外设、文件),分配调度资源。

2)提供用户接口(用户服务):屏蔽硬件细节,给用户 / 程序提供使用计算机的接口,方便使用计算机。

目前常见的操作系统::Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等

2.什么是进程

进程是程序的一次执行过程,是操作系统进行资源分配的基本单位。

操作系统如何管理进程?

首先解释什么是PCB(进程控制块)

PCB 是进程存在的唯一标志,操作系统靠 PCB 感知、管理进程。

PCB(进程控制块)核心属性

PCB 相当于操作系统给每个进程建立的档案本,下面每一项就是档案里面记录的信息。操作系统依靠 PCB 完成对进程的管理。

1)进程标识:PID 进程号

PID 就相当于每个进程的身份证号,操作系统可以同时跑上百上千个进程,靠 PID 识别区分。

2)进程状态

进程有三个状态

1.就绪状态:使用资源准备就绪,就等 CPU,一旦 CPU 空闲可马上运行。

2.运行状态:进程正在 CPU 上跑,占用 CPU。

3.阻塞状态:进程卡在等待某个事件,比如等待键盘输入、读硬盘数据。此时就算 CPU 空闲,它也不能运行。

3)CPU 现场(进程上下文):寄存器、程序计数器 PC(进程切换要保存)

类比:游戏存档读档。进程在 CPU 运行,当它要离开 CPU,把当前运行状态 “存档”;之后再次被调度上 CPU,“读档”,从刚才中断的地方继续执行,不会从头跑。

程序计数器 PC:存下一条要执行指令的内存地址。 寄存器:CPU 内部临时存放的小单元,进程运行时,计算结果存放在寄存器中。

场景:CPU 正在跑 A 进程,时间片到,要切去跑 B 进程。 A 进程不能直接丢掉当前执行进度,把 PC、寄存器全部值保存进 A 的 PCB。CPU 去运行 B 进程。以后再次调度 A 进程运行的时候,从 A 的 PCB 把现场读回 CPU 寄存器和 PC,A 接着上次断点继续跑。

4). 调度相关信息

优先级

CPU 核心少,但系统有上百个进程。操作系统依靠进程调度实现并发与并行。 优先级保存在 PCB 中,用来帮助调度器挑选进程。

  • 优先级高:更容易被调度器选中,分到更多 CPU 机会,优先上 CPU 运行。
  • 优先级低:只有高优先级进程不跑的时候,才轮到它。

进程的记账信息

存放在 PCB 中,是一套统计机制,核心统计:每个进程在 CPU 上一共运行了多长时间。

记账 = 统计 “工时”。 记账信息记录每个进程总共干了多久活。发现某个进程工时太少,就给它 “插队优待”,防止一直轮不到它(解决进程饥饿)。

补充概念:并发、并行

  • 并发:同一个 CPU 核心,用分时复用,快速切换多个进程,宏观看起来同时运行。单核 CPU,同一时刻只能跑一个进程;CPU 跑一会儿进程 A,切到进程 B,再切到进程 C。切换速度极快,人感觉是一起运行。
  • 并行:多个 CPU 核心执行不同的进程,同一时刻真正同时运行。

5)资源信息:内存地址、打开文件

PCB 里面保存的内存地址信息,本质是指针。

一个进程的内存空间里,有的部分是 “指令”,有的部分是 “数据”。内存指针告诉系统,哪个部分是指令,哪个部分是数据。

  • 指令:存放编译后的二进制机器指令,就是程序的代码。CPU 读取这里的指令一条条执行。
  • 数据:放程序运行产生的:变量、常量、全局数据。程序运行读写、修改这一块内存。

文件的真实内容存放在硬盘,PCB 不会保存文件内容,仅记录该进程打开了哪些文件。


PCB 内容小结

PID(身份)+ 进程状态 + 进程上下文(CPU 现场存档)+ 调度信息(优先级、记账信息)+ 资源信息(内存、打开文件)。

3.线程概念

用大白话来描述线程,上一节我们讲述的进程相当于一个工厂,线程就是工厂里面的流水线。

3.1为什么要有线程

问题:

为了充分的利用cpu,如果没有线程,程序只有一条执行路线,如果遇到一个任务卡住,那么后续的任务也同样会卡住

比如很多耗时操作:网络请求、磁盘读写、sleep 休眠,这些时候 CPU 根本没在干活,程序在干等。

而有了线程后就可以解决上述问题

线程如何解决:

当一部分程序在等待网络请求、磁盘读写、sleep 休眠等操作时,cpu可以切换到别的线程去干活

并且现在的cpu都是多核cpu,如果只有 1 个线程,再多 CPU 核心也只能用上 1 个,其他核心摸鱼闲置。把计算任务拆成多个线程,多个核心可以真正同时干活,缩短总耗时。

3.2线程与进程区别

进程:操作系统资源分配的基本单位。

线程:轻量化进程,操作系统执行调度的基本单位。

一个进程可以包含多个线程

四点主要区别:

1.资源共享

进程:每个进程之间拥有独立支援,进程之间不共享支援。

线程:同一个进程内的多个线程共享进程的全部资源

2.崩溃影响:

进程:进程之间崩溃互不影响。

线程:同一个进程内,如果一个线程崩溃了,可能会把其他的线程一起弄崩溃。

3.资源冲突问题

进程:进程之间通常不会有资源冲突问题

线程:同进程线程共享资源,极易发生资源竞争冲突(线程安全问题),需要加锁解决

4.操作系统定位

进程:资源分配的基本单位。

线程:cpu执行调度的基本单位。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 5:03:16

2026届AI校招薪资破5万:大模型人才争夺战解析

1. 行业现状:AI人才争夺战进入白热化阶段2026届校招季已经拉开帷幕,一个令人瞩目的现象正在发生:头部科技公司为AI算法岗位开出的薪资水平持续攀升,大模型相关岗位的应届生月薪普遍突破5万元大关。这个数字不仅刷新了技术岗位的薪…

作者头像 李华
网站建设 2026/8/24 5:01:53

基于自适应心智理论的LLM多智能体协作架构与工程实践

1. 项目概述:当大语言模型学会“读心术”最近在折腾多智能体系统时,我一直在琢磨一个核心问题:一群由大语言模型驱动的智能体,怎么才能真正高效地协作起来,而不是各说各话、互相拆台?我们给它们设定了角色、…

作者头像 李华
网站建设 2026/8/24 4:57:09

AI智能体调试新范式:构建可追溯的会话追踪系统

这次我们来看一个名为ctx的项目,它被描述为“git blamebut for agent sessions”。简单来说,这是一个为 AI 智能体(Agent)会话设计的调试与追溯工具。就像开发者用git blame来查看代码的每一行是谁、在什么时候修改的,…

作者头像 李华
网站建设 2026/8/24 4:55:54

负载均衡算法解析与面试实战指南

1. 负载均衡算法在技术面试中的核心地位作为分布式系统设计的基石性技术,负载均衡算法几乎出现在所有中高级后端开发岗位的面试考核中。我经历过上百场技术面试,无论是BAT这类大厂还是新兴的互联网企业,面试官在考察系统设计能力时&#xff0…

作者头像 李华
网站建设 2026/8/24 4:55:46

链表操作面试题解析与实战技巧

1. 链表面试题的重要性与考察点链表作为数据结构中的基础类型,在技术面试中出现的频率仅次于数组。不同于数组的连续存储特性,链表的动态内存分配和指针操作能够更全面地考察候选人对内存管理、递归思维和边界条件的处理能力。根据我对近三年一线大厂面试…

作者头像 李华
网站建设 2026/8/24 4:55:05

TrustFall MCP本地执行风险实战:漏洞复现、检测脚本与企业防护清单

摘要 TrustFall不是某一个CVE编号的单点bug,是AI编码IDE整套信任模型的架构失效。攻击者仅靠仓库内两份JSON配置文件,在用户确认信任文件夹后直接拿到本机完整权限,窃取密钥、横向渗透、污染CI流水线。本文从第一性原理拆解信任边界失效根源…

作者头像 李华