前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java小工匠】JavaNIO-基础概念

【Java小工匠】JavaNIO-基础概念

作者头像
Java小工匠
发布2018-08-10 12:00:44
5190
发布2018-08-10 12:00:44
举报
文章被收录于专栏:小工匠技术圈

Java小工匠聊网络编程--JavaNIO-基础概念

1、同步与异步

同步与异步主要是从消息通知机制角度来说的。同步没有通知,异步有知。

2、阻塞与非阻塞

阻塞与非阻塞主要是程序等待消息通知时的状态角度来说的。阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务。

3、同异步与阻非塞

(1)同步阻塞 下载一个文件,下载人不做任何事情,看着进度条下载完成。 (2)同步非阻塞 下载一个文件,下载人不做任何事情,等待下载完成的通知。 (3)异步阻塞 下载一个文件,下载人做其他事情,隔断时间看着进度是否下载完成。 (4)异步非阻塞 下载一个文件,下载人做其他事情,等待下载完成的通知。

4、LINUX IO 模型

4.1、LINUX IO 操作步骤

网络IO的本质是socket的读取,socket在linux系统被抽象为流,IO可以理解为对流的操作。例如当一个read操作发生时,它会经历两个阶段: 第一阶段:等待数据准备。 第二阶段:将数据从内核拷贝到进程中。 对于socket流而言, 第一步:通常涉及等待网络上的数据分组到达,然后被复制到内核的某个缓冲区。 第二步:把数据从内核缓冲区复制到应用进程缓冲区。

4.2、LINUX IO 模型分类

(1)同步模型(synchronous IO)

代码语言:javascript
复制
    阻塞IO(bloking IO)
    非阻塞IO(non-blocking IO)
    多路复用IO(multiplexing IO)
    信号驱动式IO(signal-driven IO) 

(2)异步IO(asynchronous IO)

4.3、Linux IO模型矩阵

image.png

4.4、Linux 阻塞IO

image.png

4.5、Linux 同步非阻塞IO

image.png

4.6、Linux 同步非阻塞IO多路复用

image.png

4.7、Linux 异步信号驱动

image.png

4.8、Linux 总结

5个IO模型

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小工匠技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、同步与异步
  • 2、阻塞与非阻塞
  • 3、同异步与阻非塞
  • 4、LINUX IO 模型
    • 4.1、LINUX IO 操作步骤
      • 4.2、LINUX IO 模型分类
        • 4.3、Linux IO模型矩阵
          • 4.4、Linux 阻塞IO
            • 4.5、Linux 同步非阻塞IO
              • 4.6、Linux 同步非阻塞IO多路复用
                • 4.7、Linux 异步信号驱动
                  • 4.8、Linux 总结
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档