视频学习地址:https://www.bilibili.com/video/BV16J411h7Rd

进程概念

  • 资源分配的最小单位,在Windwos中进程不活动,仅作为线程的容器
  • 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一一个进程。
  • 一个QQ音乐就是一个进程,同等的你可在Windows的任务管理器看一下相关的进程

线程概念

  • 应用程序的最小调度单位
  • 一个进程可以分为1个或多个线程

进程与线程的区别

进程基本上是相互独立的,而线程存在进程中并作为进程的一个子集。

进程拥有共享的资源:内存、内部的线程

线程之间共享进程的内存,多个线程可以访问一个共享变量。

线程更为轻量,切换起来比进程消耗资源少

并发与并行概念

并发(concurrent):同一时间应对(dealing with)多件事情的能力

并行(parallel):同一时间动手(doing)做多件事情的能力

来自Rob Pike(GOLANG语言之父)对于并发并行的一段描述

家庭主妇做饭、洗衣服、打扫卫生,一个人轮流交替做这些事情叫做 并发。

家庭主妇雇了3个保姆,这3个保姆独立做自己的事情,3个保姆之间这是并行。

家庭主妇与3个保姆一起做事,又有并发,又有并行。

同步、异步(Sync与Async)

同步:B代码执行需要等待A代码结束执行,这叫同步代码

异步:A、B代码同时执行,这叫异步代码

同步、异步的区别:

  • 异步代码比同步代码快一些,但异步更加消耗硬件
  • 异步就是牺牲硬件换时间,同步就是牺牲时间换硬件
  • 异步用户体验更好。比如你打开2款软件 如果2个软件依次打开,体验就不好了。同时打开2个,节省时间。
  • Java只有多线程的方式能够实现异步操作