并发和并行的区别 以及什么是串行,还有同步和异步;阻塞非阻塞;还有进程、线程、协程一次说清。

并发和并行的区别 以及什么是串行,还有同步和异步:阻塞非阻塞:
  • 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。
  • 并行:单位时间内,多个处理器或多核处理器同时处理多个任务,是真正意义上的“同时进行”。
  • 串行:有n个任务,由一个线程按顺序执行。由于任务、方法都在一个线程执行所以不存在线程不安全情况。
  • 同步:同步是指一个线程在执行某个请求的时候,如果该请求需要一段时间才能返回信息,那么这个进程会一直等待下去,直到收到返回信息才继续执行下去。
  • 异步:异步是指线程不需要一直等待下去,而是继续执行下面的代码逻辑,然后利用回调或者事件通知的方式得到该请求的结果。
  • 阻塞:当前接口数据还未准备就绪时,线程是被阻塞挂起。何为阻塞挂起?就是当前线程还处于 CPU 时间片当中,调用了阻塞的方法,由于数据未准备就绪,则时间片还未到就让出 CPU。阻塞就是放弃CPU时间片。
    • 阻塞和同步看起来都是等,但是本质上它们不一样,同步的时候可没有让出 CPU。
  • 非阻塞:非阻塞就是当前接口数据还未准备就绪时,线程不会被阻塞挂起,可以不断轮询请求接口,看看数据是否已经准备就绪。
什么是进程:什么是线程:什么是协程:
  • 进程:进程是系统中正在运行的一个程序,程序一旦运行就是进程。 进程可以看成程序执行的一个实例。

  • 线程:一个进程包含多个线程,线程是进程的一个实体,是进程的一条执行路径。

  • 协程: 协程也被叫做轻量级线程,一个线程可以包括多个协程,与线程不同的是,协程是语言层级的构造,而线程是系统层级的构造,协程的实质就是一段子程序,体现到java中就是一个方法,但是协程可以起到一个效果,就是协程(子程序)内部可以中断,转而去执行别的协程(子程序),之后又可以回来执行当前的子程序,进而提高程序执行的效率。

进程与线程的区别:

1.从属关系:

一个进程包含多个线程,线程是进程的一个实体,是进程的一条执行路径。

2.内存共享:

同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的

3.上下文切换速度:

线程上下文切换速度相较于进程是快的多的

你可能感兴趣的:(java,jvm,数据库)