【后端修行之JUC】JUC并发相关基本概念

本文用于记录学习黑马JUC课程后,个人认为有价值的笔记,核心内容均围绕标题展开。既做一个学习的记录,同时也做一个沟通交流,欢迎各位大佬互动~

进程与线程

  • 进程:进程可看作程序的实例化,也可以看作线程的集合.程序由指令和数据构成,进程负责cpu加载指令,内存加载数据以及管理IO(磁盘,网络).是系统进行资源分配的基本单位
  • 线程:线程就是一个指令流.线程是进程中的一个实体,是系统独立调度的基本单位. 作用:使多道程序更好的并发执行,提高资源利用率和系统吞吐量,增强操作系统的并发性能
  • 两者关系:①线程可看作进程的子集;②线程间通信造成的上下文切换成本比进程间通信造成的上下文成本低; Java中的通信机制:volatile、等待/通知机制、join方式、InheritableThreadLocal、MappedByteBuffer ③线程可以访问进程中的共享资源
  • 并发与并行
  • 并发:进程轮流使用cpu的做法,微观串行,宏观并行.在同一时刻,有多个指令在单个 CPU上交替执行
  • 并行:多个核下,每个核调度运行线程,这时候线程是并行的.在同一时刻,有多个指令在多个CPU上同时执行
  • 同步与异步
  • 针对方法调用的角度:
  • 同步:需要等待结果返回,才能继续运行的是同步
  • 异步:不需要等待结果返回,就能继续运行的是异步

#补充说明(根据后续学习的内容的补充说明):

再底层一点针对I/O操作而言,一个I/O过程设计两步:①I/O调用;②I/O执行(内核数据缓冲区等待数据+内核数据缓冲区数据复制到用户进程缓冲区)。针对这个层面,所谓的同步是指数据从内核数据缓冲区复制到用户进程缓冲区的过程需要用户进程参与;而异步是指不需要用户进程参与这个过程。

  • 线程应用
  • 异步调用(不用干巴巴等其他方法的返回结果,例:视频文件的格式转换,ui线程等);
  • 提升效率(充分利用多核cpu,并行计算各部干扰的计算过程). 分单核,多核情况.单核不能实际提升程序运行效率,只能确保不同线程轮流使用cpu; 多核也不能保证运行效率提升
  • IO操作不占用cpu,如果使用的是阻塞IO的api,线程不用cpu需等待io结束,利用率不高. 非阻塞IO/异步IO.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值