1、 并发和并行

并发:指两个或多个事件在同一个时间段内发生。

并行:指两个或多个时间在同一时刻发生(同时发生)。

2、 线程与进程

进程就是在内存中独立占用一定空间正在运行的程序;
是操作系统进行资源(包括cpu、内存、磁盘IO等)分配的最小单位
比如在任务管理器运行的QQ.exe

线程是程序运行流的最小单元
一个程序是有一个或多个线程组成,源于多任务处理的需要。
CPU线程越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。

示例:浏览器
打开我们的浏览器是程序,浏览器中可以同时打开多个窗口,每个窗口运行可以不同的任务,比如听音乐、写文档、看视频,每个任务运行时都会经过CPU处理在内存中执行。
程序中的每个子任务在CPU处理后就是线程:

音乐、视频每个子任务都基于浏览器,他们的内存也是包裹在浏览器中。

对比

对比 进程 线程
地址空间 有独立的内存空间 堆空间是共享的,栈空间是独立的
定义 进程是程序运行的一个实体的运行过程,是系统进行资源分配和调配的一个独立单位 线程是进程运行和执行的最小调度单位
调度 资源分配的基本单位 最小单位
安全性 进程独立,互不影响 线程共享一个进程下面的资源,可以互相通信和影响
系统开销 创建撤销切换开销大,资源要重新分配和收回 仅保存少量寄存器的内容,开销小,在进程的地址空间执行代码

总结

  • 提高性能的一种方式:提高硬件水平,处理速度或核心数。
  • 另一种方式:根据场景,合理设置线程数,软件上提高cpu利用率。

3、多线程的随机性

因为进程中的多线程是并发运行的,并发运行是一个时间段内进行的,所以线程执行也是有先后顺序的,由于线程运行完全取决于CPU,程序员处理不了,所以多线程具有随机性;

Java 程序的进程里面至少包含两个线程:主方法 垃圾回收机制
垃圾回收机制是Java本身具备的

由于创建一个线程的开销比创建一个进程的开销小的多,那么我们在开发多任务运行的时候,通常考虑创建多线程,而不是创建多进程

线程调度:

JVM 采用的是抢占式调度,每一个线程谁获得CPU的使用权谁执行。

java语言内置多线程功能支持

实现的两种方式:继承Thread类和实现Runnable接口

线程和进程 并发和并行相关推荐

  1. Java并发编程—并发和并行、线程上下文

    文章目录 并发和并行 并发和并行的区别 上下文切换 相关问题 为什么循环次数少的情况下,单线程快? 什么时候需要用多线程? 线程上下文切换消耗的时长? 用什么测试的线程上下文?面试回答下面的工具会加分 ...

  2. 并行,串行,流水线,线程和进程傻傻分不清楚

    漫谈并行,串行,流水线,线程和进程 在说并行串行流水线时,我们先要说一个概念双核四程,四核八程代表什么. 双核四程 指处理器中有两个核心, 但是利用了超线程技术,一个核心就有2个线程,所以两个核心就有 ...

  3. Java多线程————并发与并行【理解】

    一.并发与并行 正在运行的程序(软件)就是一个独立的进程, 线程是属于进程的,多个线程其实是并发与并行同时进行的. 1.并发的理解: CPU同时处理线程的数量有限. CPU会轮询为系统的每个线程服务, ...

  4. 多核、多线程、并发与并行

    一.概念 进程与线程 进程是操作系统进行资源分配管理和调度的单元,比如我们打开QQ,运行的QQ就是一个进程. 线程是进程的一个子集,线程是CPU进行调度和执行的单元. 一个进程可以包含一个线程(单线程 ...

  5. Go 学习笔记(22)— 并发(01)[进程、线程、协程、并发和并行、goroutine 启动、goroutine 特点,runtime 包函数]

    Go 语言通过编译器运行时( runtime ),从语言上支持了并发的特性. 虽然 Go 程序编译后生成的是本地可执行代码,但是这些可执行代码必须运行在Go 语言的运行时(Runtime )中.Go ...

  6. Java多线程复习:1(进程和线程、并发和并行)

    进程和线程 进程 我们电脑中每一个运行着的程序都是一个进程,程序一旦运行就是进程. 进程可以视为程序的一个实例,大部分程序可以同时运行多个实例进程(如:浏览器.记事本.画图等),也有的程序只能启动一个 ...

  7. 进程、线程、进程池、进程三态、同步、异步、并发、并行、串行

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 来源:cnblogs.com/songhaixing/p/1 ...

  8. 线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu

    目录 概论 进程VS线程 并发VS并行 多线程VS多进程 总结 概论 程序是为完成特定任务.用某种语言编写的组指令的集合.即指一段静态的代码,静态对象. 进程是程序的次执行过程, 或是正在运行的 一个 ...

  9. 进程、线程、多线程、并发、并行学习记录

    首先,并行与并发都是程序多线程处理场景,因此,一旦提到并行与并发,那首先想到的是多线程. 1,进程 狭义理解就是操作系统中一段程序的执行过程.那么广义上,进程是指一个具有一定独立功能的程序操作系统中关 ...

最新文章

  1. jquery将html转为pdf文件,通过Jquery将HTML Div转换为PDF
  2. awstats的安装和配置
  3. suse11.3下samba服务的配置
  4. 深入浅出SQL Server中的死锁
  5. 三个免费图片网站:特别适合场景图
  6. IOS项目集成Weex
  7. python实现人脸识别比对_人脸识别并比对实现(基于face_recognition)
  8. c语言里凤霞答案,C语言中循环结构的教学方法研究
  9. Mac 配置vscode调试PHP
  10. 自动劫持root密码
  11. SpringBoot--自动装配之Import注解以及源码分析
  12. 全国省市区数据库sql
  13. 网关支付、银联代扣通道、快捷支付、银行卡支付分别是怎么样进行支付的?
  14. ABAQUS中获取参考点时间-位移曲线
  15. ovnif摄像头修改ip
  16. npy文件的处理方式
  17. Python2.7版本的pip下载安装(win7 64位,Python2.7)
  18. 关于bat安装与卸载服务脚本
  19. 《圣经》放射光明,金钱散发温暖
  20. c语言 tc 编译,用Win-TC编译与用TC2.0编译的差异

热门文章

  1. 单片机原理与应用技术(七)———时钟汇编语言
  2. 第13届R会演讲 | 深度学习语义分割引导.ppt
  3. git报错:Your branch and ‘origin/master‘ have diverged
  4. PhoneME简介(翻译)
  5. Interrupt()详解
  6. 进入IT领域,多久能月入过万?
  7. PHP 引入类的办法
  8. Multicoin Capital合伙人:Loot与元宇宙无关,它可能是更好的DAO
  9. 计组实验:logisim入门实验
  10. Overleaf文章插图--将图片的范围扩大