专栏首页小工匠技术圈【Java小工匠】JavaNIO-基础概念

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

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)

    阻塞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模型

本文分享自微信公众号 - 小工匠技术圈(xgn177971793771),作者:Java小工匠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Java小工匠】JavaNIO-缓存区基础

      缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区。

    Java小工匠
  • 【小工匠聊密码学】--base58编码

    Java小工匠
  • 【小工匠聊密码学】--对称加密--概述

      对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文“原始数据”和“加密密钥“一起经过特殊加密算法处理后,使其变成复杂的加密密文发...

    Java小工匠
  • python并发编程

    py3study
  • 图解BIO、NIO、AIO、多路复用IO的区别

    ②同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并...

    肉眼品世界
  • BIO、NIO、AIO

    宇宙之一粟
  • Redis 单线程模型介绍

    redis 将所有数据放在内存中,内存的响应时长大约为 100 纳秒,这是 redis 的 QPS 过万的重要基础。

    CoderJed
  • Java中IO和NIO的本质和区别

    终于要写到java中最最让人激动的部分了IO和NIO。IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是java.io包中的所...

    程序那些事
  • 4 张图讲透 BIO、NIO、AIO、多路复用IO的区别

    孙玄@奈学教育
  • Linux中IO多路复用机制

    之前的面试有问到主线程在 ActivityThread 里初始化 Looper 后调用了 Looper.loop() 这个死循环为什么不会阻塞主线程,当时回答因...

    萬物並作吾以觀復

扫码关注云+社区

领取腾讯云代金券