线程和进程 并发和并行
1、 并发和并行
并发:指两个或多个事件在同一个时间段内发生。
并行:指两个或多个时间在同一时刻发生(同时发生)。
2、 线程与进程
进程就是在内存中独立占用一定空间正在运行的程序;
是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位
比如在任务管理器运行的QQ.exe
线程是程序运行流的最小单元
一个程序是有一个或多个线程组成,源于多任务处理的需要。
CPU线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。
示例:浏览器
打开我们的浏览器是程序,浏览器中可以同时打开多个窗口,每个窗口运行可以不同的任务,比如听音乐、写文档、看视频,每个任务运行时都会经过CPU处理在内存中执行。
程序中的每个子任务在CPU处理后就是线程:
音乐、视频每个子任务都基于浏览器,他们的内存也是包裹在浏览器中。
对比
对比 | 进程 | 线程 |
---|---|---|
地址空间 | 有独立的内存空间 | 堆空间是共享的,栈空间是独立的 |
定义 | 进程是程序运行的一个实体的运行过程,是系统进行资源分配和调配的一个独立单位 | 线程是进程运行和执行的最小调度单位 |
调度 | 资源分配的基本单位 | 最小单位 |
安全性 | 进程独立,互不影响 | 线程共享一个进程下面的资源,可以互相通信和影响 |
系统开销 | 创建撤销切换开销大,资源要重新分配和收回 | 仅保存少量寄存器的内容,开销小,在进程的地址空间执行代码 |
总结
- 提高性能的一种方式:提高硬件水平,处理速度或核心数。
- 另一种方式:根据场景,合理设置线程数,软件上提高cpu利用率。
3、多线程的随机性
因为进程中的多线程是并发运行的,并发运行是一个时间段内进行的,所以线程执行也是有先后顺序的,由于线程运行完全取决于CPU,程序员处理不了,所以多线程具有随机性;
Java 程序的进程里面至少包含两个线程:主方法 垃圾回收机制
垃圾回收机制是Java本身具备的
由于创建一个线程的开销比创建一个进程的开销小的多,那么我们在开发多任务运行的时候,通常考虑创建多线程,而不是创建多进程
线程调度:
JVM 采用的是抢占式调度,每一个线程谁获得CPU的使用权谁执行。
java语言内置多线程功能支持
实现的两种方式:继承Thread类和实现Runnable接口
线程和进程 并发和并行相关推荐
- Java并发编程—并发和并行、线程上下文
文章目录 并发和并行 并发和并行的区别 上下文切换 相关问题 为什么循环次数少的情况下,单线程快? 什么时候需要用多线程? 线程上下文切换消耗的时长? 用什么测试的线程上下文?面试回答下面的工具会加分 ...
- 并行,串行,流水线,线程和进程傻傻分不清楚
漫谈并行,串行,流水线,线程和进程 在说并行串行流水线时,我们先要说一个概念双核四程,四核八程代表什么. 双核四程 指处理器中有两个核心, 但是利用了超线程技术,一个核心就有2个线程,所以两个核心就有 ...
- Java多线程————并发与并行【理解】
一.并发与并行 正在运行的程序(软件)就是一个独立的进程, 线程是属于进程的,多个线程其实是并发与并行同时进行的. 1.并发的理解: CPU同时处理线程的数量有限. CPU会轮询为系统的每个线程服务, ...
- 多核、多线程、并发与并行
一.概念 进程与线程 进程是操作系统进行资源分配管理和调度的单元,比如我们打开QQ,运行的QQ就是一个进程. 线程是进程的一个子集,线程是CPU进行调度和执行的单元. 一个进程可以包含一个线程(单线程 ...
- Go 学习笔记(22)— 并发(01)[进程、线程、协程、并发和并行、goroutine 启动、goroutine 特点,runtime 包函数]
Go 语言通过编译器运行时( runtime ),从语言上支持了并发的特性. 虽然 Go 程序编译后生成的是本地可执行代码,但是这些可执行代码必须运行在Go 语言的运行时(Runtime )中.Go ...
- Java多线程复习:1(进程和线程、并发和并行)
进程和线程 进程 我们电脑中每一个运行着的程序都是一个进程,程序一旦运行就是进程. 进程可以视为程序的一个实例,大部分程序可以同时运行多个实例进程(如:浏览器.记事本.画图等),也有的程序只能启动一个 ...
- 进程、线程、进程池、进程三态、同步、异步、并发、并行、串行
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:cnblogs.com/songhaixing/p/1 ...
- 线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu
目录 概论 进程VS线程 并发VS并行 多线程VS多进程 总结 概论 程序是为完成特定任务.用某种语言编写的组指令的集合.即指一段静态的代码,静态对象. 进程是程序的次执行过程, 或是正在运行的 一个 ...
- 进程、线程、多线程、并发、并行学习记录
首先,并行与并发都是程序多线程处理场景,因此,一旦提到并行与并发,那首先想到的是多线程. 1,进程 狭义理解就是操作系统中一段程序的执行过程.那么广义上,进程是指一个具有一定独立功能的程序操作系统中关 ...
最新文章
- jquery将html转为pdf文件,通过Jquery将HTML Div转换为PDF
- awstats的安装和配置
- suse11.3下samba服务的配置
- 深入浅出SQL Server中的死锁
- 三个免费图片网站:特别适合场景图
- IOS项目集成Weex
- python实现人脸识别比对_人脸识别并比对实现(基于face_recognition)
- c语言里凤霞答案,C语言中循环结构的教学方法研究
- Mac 配置vscode调试PHP
- 自动劫持root密码
- SpringBoot--自动装配之Import注解以及源码分析
- 全国省市区数据库sql
- 网关支付、银联代扣通道、快捷支付、银行卡支付分别是怎么样进行支付的?
- ABAQUS中获取参考点时间-位移曲线
- ovnif摄像头修改ip
- npy文件的处理方式
- Python2.7版本的pip下载安装(win7 64位,Python2.7)
- 关于bat安装与卸载服务脚本
- 《圣经》放射光明,金钱散发温暖
- c语言 tc 编译,用Win-TC编译与用TC2.0编译的差异
热门文章
- 单片机原理与应用技术(七)———时钟汇编语言
- 第13届R会演讲 | 深度学习语义分割引导.ppt
- git报错:Your branch and ‘origin/master‘ have diverged
- PhoneME简介(翻译)
- Interrupt()详解
- 进入IT领域,多久能月入过万?
- PHP 引入类的办法
- Multicoin Capital合伙人:Loot与元宇宙无关,它可能是更好的DAO
- 计组实验:logisim入门实验
- Overleaf文章插图--将图片的范围扩大