zoukankan      html  css  js  c++  java
  • 【Java】同步异步阻塞非阻塞概念

    一. 阻塞/非阻塞

    阻塞非阻塞说的是线程的状态

    1. 阻塞: 线程调用IO接口后,一直等待,不能做其它事
    2. 非阻塞:线程调用IO接口时,可以做其它事,不用一直等待

    二. 同步/异步

    同步和异步说的是消息的通知机制

    1. 同步:线程调用IO接口后,不停询问IO接口是否完成
    2. 异步:线程调用IO接口后,不用一直询问,由IO接口告知结果

    三. 组合

    1. 同步阻塞: 调用IO接口后,线程一直等待并不停询问IO接口调用结果
    2. 同步非阻塞:调用IO接口后,线程可以做其它事,隔段时间询问IO接口调用结果
    3. 异步阻塞: 调用IO接口后,线程一直等待并等待IO接口返回结果
    4. 异步非阻塞:调用IO接口后,线程可以做其它事,由IO接口告知结果

    回调或事件机制实现异步


    四. 示例

    以 小明点击下载按钮 为例


    同步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,这是同步阻塞;


    异步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,但是软件下载完成其实是会「叮」的一声通知的(但小明依然那样干等着),这是异步阻塞;


    同步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,不过他总需要时不时瞄一眼屏幕看软件是不是下载完成了,这是同步非阻塞;


    异步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,软件下载完之后「叮」的一声通知小明,小明再回来继续处理下载完的软件,这是异步非阻塞。


    五. 参考资料

    1. https://zhuanlan.zhihu.com/p/22707398
    2. https://www.zhihu.com/question/27991975/answer/56432635
  • 相关阅读:
    吃金沙鼎火锅
    吴中路开了一家Boutique hotel(skyfortune)
    吃韩包子
    丽江
    吃成都淘海阁鲍鱼海鲜汤煲
    2007年最好笑的话剧“乱套了”
    不老药白丽格(玉芙蓉)Briglow (www.briglow.com)
    丽江趣事
    看看这个是什么菜
    这是什么动物?
  • 原文地址:https://www.cnblogs.com/gossip/p/14473659.html
Copyright © 2011-2022 走看看