当前位置: 首页 > news >正文

JUC并发编程基础篇第一章之进程/并发/异步的概念[理解基本概念]

1. 进程和线程的概念

进程:

  • 系统正在运行的一个应用程序;程序一旦运行就是一个进程;进程是资源分配的最小单位

线程:

  • 是进程的实际运行单位;一个人进程可以并发控制多个线程,每条线程并行执行不同的任务

区别:

  • 进程基本上相互独立的;而线程存在于进程内,是进程的一个子集
  • 进程拥有共享的资源,如内存空间等,供其内部的线程共享
  • 进程间通信较为复杂(同一台计算机的进程通信称为 IPC,不同计算机之间的进程通信,需要通过网络,并遵守共同的协议,例如 HTTP)
  • 线程通信相对简单,因为它们共享进程内的内存,一个例子是多个线程可以访问同一个共享变量
  • 线程更轻量,线程上下文切换成本一般上要比进程上下文切换低

2. 并发和并行的概念

并发:

  • 两个或多个事件在同一时间间隔发生
  • 例: 家庭主妇做饭、打扫卫生、给孩子喂奶,她一个人轮流交替做这多件事,这时就是并发

并行:

  • 并行是指两个或者多个事件在同一时刻发生
  • 例: 家庭主妇雇了个保姆,她们一起做这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一个人用锅时,另一个人就得等待)雇了3个保姆,一个专做饭、一个专打扫卫生、一个专喂奶,互不干扰,这时是并行

3. 异步和同步的概念

同步:

  • 需要等待结果返回,才能继续运行就是同步

异步:

  • 不需要等待结果返回,就能继续运行就是异步

总结

  • 单核 cpu 下,多线程不能实际提高程序运行效率,只是为了能够在不同的任务之间切换,不同线程轮流使用cpu ,不至于一个线程总占用 cpu,别的线程没法干活
  • 多核 cpu 可以并行跑多个线程,但能否提高程序运行效率还是要分情况的
  • IO 操作不占用 cpu,但是会堵塞线程; 只是我们一般拷贝文件使用的是【阻塞 IO】,这时相当于线程虽然不用 cpu,但需要一直等待 IO 结束,没能充分利用线程。所以才有后面的【非阻塞 IO】和【异步 IO】优化
http://www.lryc.cn/news/57865.html

相关文章:

  • c语言—指针进阶
  • 总结二分法
  • 二叉搜索树和AVL树
  • 计算机体系结构量化研究方法【2】高速缓存Cache
  • 初识设计模式 - 迭代器模式
  • 三路快排(基于三指针单趟排序的快速排序)+快排时间复杂度再分析
  • Eyeshot Ultimate 2023 Crack
  • JAVA-8-[SpringBoot]入门程序案例和原理分析
  • 前端工程化
  • 【redis】单线程 VS 多线程(入门)
  • 2023蓝桥杯Java研究生组赛题
  • 多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测
  • 微积分——Rolle定理的理解(罗尔定理)
  • linux内核之select/poll/epoll
  • 文件流下载
  • C语言模拟实现:atoi函数
  • LeetCode.每日一题 2427. 公因子的数目
  • 蓝牙BQB认证 - HFP profile配置说明
  • 【接口测试工具】Eolink Apikit 快速入门教程
  • 使用Python和OpenCV实现实时人脸检测并保存截图
  • [linux kernel]slub内存管理分析(7) MEMCG的影响与绕过
  • MySQL创建数据库(CREATE DATABASE语句)
  • 【JavaWeb】4—Tomcat
  • 宝塔Linux面板部署Python flask项目
  • spring中产生bean的几种方式
  • OD-火星文计算(Python)
  • 【vue3教程】初入了解vue3的基本结构
  • 智慧供水综合运营平台解决方案
  • 文件系统、描述符和缓冲区
  • java微服务商城高并发秒杀项目--009.流控规则和降级规则