JavaEE 多线程01

为什么引入多线程?

首先进程已经能很好的完成多任务这个情景下的并发编程了,那为什么又引入多线程呢?

这是因为在一些情景下,我么需要大量的创建和销毁进程来完成一些任务,此时多进程对系统的开销就会很大了.

假设有这样一个场景,服务器同时接收到很多个服务请求,这个时候服务器就会创建多个进程来处理这些请求,处理完成之后就要摧毁这个请求,这个时候就需要大量的创建和销毁对应的进程了,这样对服务器的cpu,硬盘,内存,带宽都会造成很多的占用.这个时候多进程表现的就不尽人意了.

这个时候我们就引入了多线程,你可以理解线程为一种轻量级的进程,线程在能完成以上情景之外,减小了创建的开销,保持了独立调度的特性,这样在支持并发的同时,减去了创建和销毁的开销!

注:线程是系统调度的基本单位,进程是系统分配资源的基本单位.

那么,线程是怎么做到这一点的呢?

线程的创建开销 

线程和进程的描述一样是使用一个pcb来描述的,一个进程其实有多个pcb,这就是一个线程组,这里的线程在内存指针和文件操作符表等上是共用一个空间的,只有在其他的pid等是不同的,由于文件指针相同,所以只有在第一个线程的创建的时候是需要内存开销的,其他的时候都开销非常小,你可以理解为只有创建第一个线程的时候从系统分配资源,后续都直接使用之前分配好的资源即可.也不是随便两个线程都是"共享空间的",只有线程组内的线程才共享一个空间,而这个线程组可以理解为是进程的一部分.

进程和线程的区别

这是一个经典的问题,我们来讨论一下

1.每个进程有自己的资源,进程之间相互不影响,而线程之间有一些资源是共享的,比如文件描述符表和内存指针等.进程是cpu分配资源的基本单位,线程是cpu调度的基本单位.

2.进程之间相互独立运行,线程之间可能相互影响,可能一个线的崩溃导致一系列线程的异常终止

3.同一个进程中的线程可能相互干扰导致线程安全问题.

4.线程不是越多越好的,当线程超过十个之后对性能的提升就不明显了,调度开销可能就会越发明显

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/208852.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HSV映射到圆锥坐标系

def bgr2hsvcone(img):arr_hsv cv2.cvtColor(img, cv2.COLOR_BGR2HSV)h arr_hsv[..., 0] / 180. * 2s arr_hsv[..., 1] / 255.v arr_hsv[..., 2] / 255.x np.cos(h * np.pi) * s * vy np.sin(h * np.pi) * s * vreturn np.stack((x, y, v), axis-1)

GPIO模式详解:推挽/开漏/浮空/上拉/下拉/施密特(迟滞)输入

GPIO(General Purpose Input Output)可用于执行数字输入或输出功能。典型的应用包括从/向模拟或数字传感器/设备读写数值、驱动LED、为I2C通信驱动时钟、生成外部组件的触发、发出中断等。 文章目录 1 GPIO简介2 输出模式2.1 推挽输出2.2 开漏输出 3 输入模式3.1 高阻态(浮空)、…

Pycharm的程序调试

有如下代码需要进行调试&#xff1a; i 1 while i < 10:print(i)步骤一&#xff1a;设置断点 步骤二&#xff1a;进入调试视图 方式1&#xff1a;右键单击编辑区&#xff1a;点击’Debug模块名’ ​ 方式2&#xff1a;ShiftF9 ​ 方式3&#xff1a;单机工具栏上的调试按钮…

某60区块链安全之Call函数簇滥用实战二学习记录

区块链安全 文章目录 区块链安全Call函数簇滥用实战二实验目的实验环境实验原理实验内容实验步骤EXP利用 Call函数簇滥用实战二 实验目的 学会使用python3的web3模块 学会并区分以太坊call、staticcall、delegatecall三种函数调用的特点 找到合约漏洞进行分析并形成利用 实验…

《数学之美》第三版的读书笔记一、主要是马尔可夫假设、隐马尔可夫模型、图论深度/广度、PageRank相关算法、TF-IDF词频算法

1、马尔可夫假设 从19世纪到20世纪初,俄国有个数学家叫马尔可夫他提出了一种方法,假设任意一个词出现的概率只同它前面的词有关。这种假设在数学上称为马尔可夫假设。 2、二元组的相对频度 利用条件概率的公式,某个句子出现的概率等于每一个词出现的条件概率相乘,于是可展…

2023亚太杯数学建模竞赛(亚太赛)选题建议+初步分析

如下为C君的2023亚太杯数学建模竞赛&#xff08;亚太赛&#xff09;选题建议初步分析&#xff1a; 提示&#xff1a;DS C君认为的难度&#xff1a;C<A<B&#xff0c;开放度&#xff1a;A<B<C。 以下为ABC题选题建议及初步分析&#xff1a; A题&#xff1a;Image…

jQuery【菜单功能、淡入淡出轮播图(上)、淡入淡出轮播图(下)、折叠面板】(五)-全面详解(学习总结---从入门到深化)

目录 菜单功能 淡入淡出轮播图(上) 淡入淡出轮播图(下) 折叠面板 菜单功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…

K8s实战RestartPoliy策略

一、默认策略为Always cmd.yaml apiVersion: v1 kind: Pod metadata:name: myapp-pod labels:app: myapp spec: containers:- name: myapp-container image: busyboxcommand: [sh, -c, echo OK!&& sleep 60]首先我们根据这个yaml创建一个测试的pod 执行命令 kubec…

visionOS空间计算实战开发教程Day 5 纹理和材质

在​​Day 4​​​中我们使用了​​ImmersiveSpace​​并在其中添加了一个立方体&#xff0c;但对这个立方体我们只配置了长宽高&#xff0c;并没有做进一步的操作。 本文中我们会通过纹理和材质对这个立方体的六个面分别进行不同的绘制。首先我们将​​ImmersiveView​​分拆…

宽压12-90V转5V3A降压IC,AH8691芯片

## 宽压12-90V转5V3A降压IC&#xff0c;多重保护功能全面升级 1. **宽压输入范围**&#xff1a;8V-100V&#xff0c;支持输出电压低至3.3V 2. **高效转换**&#xff1a;5A典型峰值开关电流&#xff0c;高达95%的转换效率 3. **多重保护**&#xff1a;包括过流、过热、输出短路…

联想拯救者Lenovo Legion R9000K 2021H(82N6)原装出厂Windows10/Win11系统ISO镜像

链接&#xff1a;https://pan.baidu.com/s/13NkeCXNdV0Ib5eeRnZUeAQ?pwdnlr7 提取码&#xff1a;nlr7 拯救者笔记本电脑原厂WIN系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文…

如何准备软考-软件设计师(下)

前言&#xff1a; 下午的题目一般有6道题目&#xff0c;前4题是必答题&#xff0c;第5题和第6题二选一。每题15分&#xff0c;一共75分&#xff0c;45分即可通过。 接下来&#xff0c;我们以2022下半年软件设计师案例来当作教材来讲&#xff0c;下午的每种类型的题目该如何去…