并发 并行 同步 异步 多线程

本篇博客着重讲解并发,并行,异步,多线程的理论理解和彼此之间的区别,希望可以给这方面理解不足的博友带来帮助。

并发

在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程

序都是在同一个处理机上运行。其中两种并发关系分别是同步互斥

互斥

进程间相互排斥的使用临界资源的现象,就叫互斥。

同步

进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一个进程的输入,当第一个进程没有输出时第二个进程必须等待。具有同步关系的一组并发进程相互发送的信息称为消息或事件。

其中并发又有伪并发和真并发,伪并发是指单核处理器的并发,真并发是指多核处理器的并发。

并行

在单核处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种;

在多核处理器中,进程不仅可以交替执行,而且可以重叠执行。在多核处理器上的程序才可实现并行处理。从而可知,并行是针对多核处理器而言的。

并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

多核的好处,就是可以同时做事情, 这个和单核完全不一样的。

多线程

多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。多线程可以实现线程间的切换执行。

多线程的好处,比较容易的实现了异步切换的思想, 因为异步的程序很难写。多线程本身程还是以同步完成,但是应该说比效率是比不上异步的。 而且多线程很容易写, 相对效率也高。

多线程同步原因:

在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个Java线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果。

异步

异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。

异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。

异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。

猜你喜欢

转载自blog.csdn.net/weixin_42236165/article/details/92091076