Java并发学习:进程与线程的区别

ops/2025/1/31 14:03:24/

进程的基本原理

一个进程是一个程序的一次启动和执行,是操作系统程序装入内存,给程序分配必要的系统资源,并且开始运行程序的指令。

同一个程序可以多次启动,对应多个进程,例如同一个浏览器打开多次。

一个进程由程序段、数据段和进程控制块三部份组成:

  • 程序段一般也被称为代码段。代码段是进程的程序指令在内存中的位置,包含需要执行的指令集合
  • 数据段是进程的操作数据在内存中的位置,包含需要操作的数据集合
  • 程序控制块(Program Control Block, PCB)包含进程的描述信息和控制信息,是进程存在的唯一标志

线程的基本原理

为什么有线程?线程解决了什么问题?

随着计算机的发展,CPU的性能越来越高,从早期的20MHz发展到了现在的2GHz以上,从单核CPU发展到了多核CPU,性能提升了成千上万倍。为了充分发挥CPU的计算性能,提升CPU硬件资源的利用率,同时弥补进程调度过于笨重产生的问题,进程内部演进出了并发调度的诉求,于是就发明了线程。

线程是CPU调度的最小单位

一个进程可以有一个或多个线程,各个线程之间共享进程的内存空间、系统资源,进程仍然是操作系统资源分配的最小单位。

一个标准的线程主要由三部份组成,即线程描述信息、程序计数器和栈内存。在Java中,执行程序流程的重要单位是“方法”,而栈内存的分配单位是“栈帧”(或者叫“方法帧”)。

  • 方法的每一次执行都需要为其分配一个栈帧(方法帧),栈帧主要保存该方法中的局部变量、方法的返回地址以及其他方法的相关信息。
  • 当线程的执行流程进入方法时,JVM就会为方法分配一个对应的栈帧压入栈内存;当线程的执行流程跳出方法时,JVM就从栈内存弹出该方法的栈帧,此时方法帧的局部变量的内存空间就会被回收

进程和线程的区别

  • 线程是“进程代码段”的一次顺序执行流程。一个进程由一个或多个线程组成,一个进程至少有一个线程。
  • 线程是CPU调度的最小单位,进程是操作系统分配资源的最小单位。线程的划分尺度小于进程,使得多线程程序的并发性高。
  • 线程是出于高并发的调度诉求从进程内部演进而来的。线程的出现既充分发挥了CPU的计算性能,又弥补了进程调度过于笨重的问题。
  • 进程之间是相互独立的,但进程内部的各个线程之间并不完全独立。各个线程之间共享进程的方法区内存、堆内存、系统资源(文件句柄、系统信号等)。
  • 切换速度不同:线程上下文切换比进程上下文切换要快得多。所以,有的时候,线程也称为轻量级进程。

http://www.ppmy.cn/ops/154494.html

相关文章

2025年1月个人工作生活总结

本文为 2025年1月工作生活总结。 研发编码 使用sqlite3命令行查询表数据 可以直接使用sqlite3查询数据表,不需进入命令行模式。示例如下: sqlite3 database_name.db "SELECT * FROM table_name;"linux shell使用read超时一例 先前有个编译…

计算机网络 IP 网络层 2 (重置版)

IP的简介: IP 地址是互联网协议地址(Internet Protocol Address)的简称,是分配给连接到互联网的设备的唯一标识符,用于在网络中定位和通信。 IP编制的历史阶段: 1,分类的IP地址: …

Linux:基础IO(一.C语言文件接口与系统调用、默认打开的文件流、详解文件描述符与dup2系统调用)

目录 1.基础认识 2.再识c语言中文件接口 2.1fopen()与fclose() 2.2文件操作函数 3.三个默认打开的文件流 4.相关系统接口 4.1open() 4.2umask()函数 4.3close()、write()、read() 5.文件描述符 5.1 0、1、2 5.2底层 6.文件描述符的分配规则 重定向—dup2()系统调用…

知识管理系统塑造企业文化与学习型组织的变革之路

内容概要 知识管理系统(Knowledge Management System, KMS)是指组织内部为有效获取、存储、共享和应用知识而建立的结构和技术体系。这一系统不仅是信息技术的运用,更是推动企业文化和学习型组织发展的重要工具。在当今快速变化的商业环境中…

论文阅读(八):结构方程模型用于研究数量遗传学中的因果表型网络

1.论文链接:Structural Equation Models for Studying Causal Phenotype Networks in Quantitative Genetics 摘要: 表型性状可能在它们之间发挥因果作用。例如,农业物种的高产可能会增加某些疾病的易感性,相反,疾病的…

DeepSeekMoE:迈向混合专家语言模型的终极专业化

一、结论写在前面 论文提出了MoE语言模型的DeepSeekMoE架构,目的是实现终极的专家专业化(expert specialization)。通过细粒度的专家分割和共享专家隔离,DeepSeekMoE相比主流的MoE架构实现了显著更高的专家专业化和性能。从较小的2B参数规模开始&#x…

【初识C语言】作业讲解15课

前言:感觉就是谢谢b站鹏哥 内容: ##更新,晚上还要吃饭,代码还没有运行,只做了笔记 就是函数和数组的简单理解,然后晚上在敲一小时代码 但是现在先写题目,但是是和老师一起写的,老…

从规则到神经网络:机器翻译技术的演进与未来展望

从规则到神经网络:机器翻译技术的演进与未来展望 引言 还记得早些年用翻译软件翻译一句简单的英文句子,却发现翻译结果让人啼笑皆非的日子吗?从“我喜欢吃苹果”被翻译成“我喜欢吃苹果电脑”,到今天的神经网络机器翻译(Neural Machine Translation, NMT)能够生成语义流…