栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

并发基本概念

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

并发基本概念

文章目录
    • 程序,进程和线程之间的区别
    • 进程间通信
    • 线程间通信
    • 并发和并行 (单核并发,多核并行)

程序,进程和线程之间的区别

程序:在磁盘上静态存储(类似Java中的类)
进程:加载到内存,可以被执行的,可以看成程序的实例(类似Java中的对象);基本相互独立,而线程存在于进程内,是进程的一个子集
线程:一个进程可以分成多个线程,一个线程就是一个指令流,线程顺序执行

进程间通信

进程间通信比较复杂,同一台计算机的进程通信称为IPC(Inter-process communication)

线程间通信
  • 线程间通信相对简单,因为他们共享进程内的内存
  • 多个线程可以访问同一个变量
  • 线程更轻量,线程上下文切换成本一般要比进程上下文切换低
  • Java中每个方法就是个线程
并发和并行 (单核并发,多核并行)

单核CPU下,线程实际还是串行执行,操作系统中有个组件叫 任务调度器,将CPU的时间片分给不同的线程使用,只是由于CPU在线程间切换非常快,所以感觉是同时运行,总结为一句话:微观串行,宏观并行

  • 并发(concurrent)是同一时间应对(deal)多件事情的能力
  • 并行(parallel)是同一时间动手做(doing)多件事情的能力
  1. 单核CPU下,多线程不能实际提高程序运行效率,只是为了能够在不同的任务之间切换,不同线程轮流使用CPU,不至于一个线程总占用CPU,别的线程没法干活
  2. 多核CPU可以并行跑多个线程,但能否提高程序的运行效率还是要分情况的,有些任务经过设计,将任务拆分并执行,当然可以提高程序的运行效率。但不是所有计算任务都能拆分,参考 阿姆达尔定律;也不是所有任务都需要拆分,任务的目的如果不同,谈拆分和效率没什么意义
  3. IO操作不占用CPU,只是我们一般拷贝文件使用得的是阻塞IO,这是相当于线程虽然不用CPU,但需要一直等待IO结束,没能充分利用线程,所有才有后面的非阻塞IO和异步IO优化
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/937120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号