使用阻塞队列实现线程同步_线程可以并行执行吗

使用阻塞队列实现线程同步_线程可以并行执行吗一、串行,并行,并发1.名称解释串行:程序按顺序执行,同一时间只能执行一个程序,前一个执行完毕后才轮到后一个并行:多个程序可以同时执行,宏观和微观上看程序都是同时执行并发:同一时刻只有一条程序


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、串行,并行,并发

1.名称解释

  • 串行:程序按顺序执行,同一时间只能执行一个程序,前一个执行完毕后才轮到后一个

  • 并行:多个程序可以同时执行,宏观和微观上看程序都是同时执行

  • 并发:同一时刻只有一条程序执行,但是多个进程被快速轮换执行,宏观上看是同时执行,微观上看只是把时间分成若干段,使多个进程快速交替的执行

并发与并行关注的是程序是否在同一时间内同时被执行

使用阻塞队列实现线程同步_线程可以并行执行吗

2.举个例子

  • 串行:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接
  • 并发:你吃饭吃到一半,电话来了,你接了电话聊了两句,停下来吃了两口饭,又拿起电话聊了两句
  • 并行:你吃饭吃到一半,电话来了,你一边打电话一边吃饭

另外:

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

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

二、进程与线程

1.名称解释

  • 进程:程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础
  • 线程:有时被称为轻量级进程,是程序执行流的最小单元。线程是进程中的一个实体,是被系统独立调度和分派的基本单位

进程之间资源不共享,而线程之间资源共享(故引入锁以处理资源分配问题)

2.举个例子

  • 进程:你开了一个迅雷,又开了一个QQ,这分别是两个进程
  • 线程:你在QQ分别和好友a还有好友b聊天,这是QQ这个进程里的两个线程

三、同步与异步

1.名称解释

  • 同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。

  • 异步,当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

同步和异步关注的是消息通信机制

2.举个例子

  • 同步:你去书店买本书,老板说帮你找一下,然后开始找,等到找到了再告诉你结果为止(返回结果)
  • 异步:你去书店买本书,老板说帮你找一下找到再给你打电话(不返回结果),等他找到的就打电话给你(回调)

四、阻塞和非阻塞

1.名词解释

  • 阻塞:是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回
  • 非阻塞:调用指在不能立刻得到结果之前,该调用不会阻塞当前线程

阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态

2.举个例子

  • 阻塞:你去书店买书,立即买到了,或者没有立刻就走了,这就是非阻塞
  • 非阻塞:你去书店买书,如果恰好书店没有,你就等一直等到书店有了这本书买到了才走,然后后排的人必须等你走了以后才能买书
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170824.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android WebView总结

    android WebView总结

    2021年12月6日
  • Pytest(17)运行未提交的git(pytest-picked)

    Pytest(17)运行未提交的git(pytest-picked)前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

    2022年7月31日
  • 谷歌chrome浏览器被hao123 360等劫持问题解决方案

    谷歌chrome浏览器被hao123 360等劫持问题解决方案1.先chrome://version能看到下面这一串“C:\ProgramFiles\Google\Chrome\Application\chrome.exe”–flag-switches-begin–flag-switches-end–origin-trial-disabled-features=SecurePaymentConfirmationhttp://hao.360.com/?src=lm&ls=n4e1d7e8c992.复制上面这一串3.打开4.在标记处粘贴刚

    2022年7月14日
  • 方法重载和重写的区别[通俗易懂]

    方法重载和重写的区别[通俗易懂]一、方法重载(overload)重载方法的定义是在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可。方法重载的作用:屏蔽了同一功能的方法由于参数不同所造成方法名称不同。方法重载判断原则: “两同一不同”两同:同类中,方法名相同;一不同:方法参数列表不同(参数类型、参数个数、参数顺序);       只要参数类型,参数个数,参数顺序有一个不同,参数列表就不同.注意:方法重载和…

    2022年6月13日
  • 异步fifo的工作原理_netty的异步实现原理

    异步fifo的工作原理_netty的异步实现原理FPGA(一):异步FIFO实现(包含源码和仿真文件)一、异步FIFO的重要参数及其作用1、FIFO:FirstInputFirstOutput,即先入先出队列,本质是RAM。FIFO有几个最重要的参数:2、wr_clk:写时钟,所有与写有关的操作都是基于写时钟;3、rd_clk:读时钟,所有与读有关的操作都是基于读时钟;4、FIFO_WIDTH:FIFO的位宽,即FIFO中每个地址对应的数据的位宽;5、FIFO_DEPTH:FIFO的深度,即FIFO中能存入多少个(位宽为FIFO_

    2022年8月13日
  • 各种门平面图画法_关于CAD各种门怎么画平面图就行?[通俗易懂]

    各种门平面图画法_关于CAD各种门怎么画平面图就行?[通俗易懂]回答:CAD怎么画钢琴平面图CAD怎么画出钢琴的平面图呢?很简单的,有需要的朋友动手试试吧。1、启动中望CAD软件,执行“矩形”命令(rec),绘制1575mmX230mm和1575X50mm的直角矩形。2、执行矩形命令和移动命令(M),绘制出如图所示图形。3、执行移动命令,按[F8]键打开“正交”模式,捕捉上一步绘制的矩形中点,将二部分直角矩形图形组合在一起。4、执行“矩形”命令(rec),绘制…

    2022年5月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号