并发,并行,串行,同步,异步?

4,668 阅读3分钟

   1.并发编程又叫多线程编程。

并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,

并发性是对有限物理资源强制行使多用户共享以提高效率。

(并发指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已))

并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。


 2.  “并行”
指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。(hadoop集群就是并行计算的)

     当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。


并发和并行 ,是即相似又有区别的两个概念,
并行是指两个或者多个事件在同一时刻发生;
并发是指两个或多个事件在同一时间间隔内发生。

在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。
倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可被分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可以同时执行。

  3.串行、并行:

并行和串行指的是任务的执行方式。串行是指多个任务时,各个任务按顺序执行,完成一个之后才能进行下一个。并行指的是多个任务可以同时执行,异步是多个任务并行的前提条件。

  4. 同步、异步:
          指的是能否开启新的线程。同步不能开启新的线程,异步可以。 异步和同步是相对的,

同步 就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。
异步 就是彼此独立, 在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

线程就是实现异步的一个方式。
异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。
 异步和多线程并不是一个同等关系, 异步是最终目的,  多线程只是我们实现异步的一种手段。

异步是当一个调用请求发送给被调用者 ,   而调用者不用等待其结果的返回而可以做其它的事情。
实现异步可以采用多线程技术或者交给另外的进程来处理。