【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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

移动端及时调试工具 - weinre使用方法

HTML5学堂:在前一篇文章当中,我们借着weinre讲解了NodeJS中的一些简单命令,也讲解了weinre的安装方法,今天我们把weinre的使用“完结”掉...

31030
来自专栏c#开发者

在 BizTalk Server 2004 SP2 中存档和清除 BizTalk 跟踪数据库

在 Biztalk Server 2004 SP2 中存档和清除 Biztalk 跟踪数据库 发布日期: 2006年09月19日 小结:本白皮书介绍如何配置 B...

36630
来自专栏信安之路

需要谨慎使用的几个Linux命令

运维人员经常接触的 Linux 系统比较多,在 Linux 下的管理与操作通常都是通过命令行的方式对服务器进行操作,为了操作安全,有些命令的危害是特别大的,需要...

10600
来自专栏容器云生态

Docker监控方案(TIG)的研究与实践之Telegraf

前言 Docker由于使用了基于namespace和cgroup的技术,因此监控docker容器和监控宿主机在某些性能指标和方式上有一些区别,而传统的监控方式可...

66290
来自专栏北京马哥教育

优化存储性能?你需要关注这些Linux I/O调度程序选项

要优化Linux性能,IT团队应该检查当前正在使用的I/O调度程序,并评估诸如deadline和完全公平队列(Completely Fair Queuing)这...

35740
来自专栏about云

kafka权威指南 第二章第6节 Kafka集群配置与调优

问题导读: 1 Kafka集群有什么优势? 2 集群中部署多少个节点合适? 3 集群针对系统如何调优? Kafka集群 对于本地的开发工作或者概念性的...

40560
来自专栏张善友的专栏

系统进程管理工具Process Explorer

系统进程往往是不少读者操作的“禁区”,其实借助一些功能强大的工具即可消除对该禁区的恐惧。Process Explorer就是一款系统进程管理工具,它不仅能方便地...

27170
来自专栏子勰随笔

SDK热更系列之SDKHotfix待优化点

237100
来自专栏PHP在线

PHP安全:session劫持的防御

点击蓝色小字关注 session 数据暴露 会话数据常会包含一些个人信息和其它敏感数据。基于这个原因,会话数据的暴露是被普遍关心的问题。一般来说,暴露的范围不会...

38980
来自专栏较真的前端

您必须知道的 Git 分支开发规范

Git 是目前最流行的源代码管理工具。 为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作

16940

扫码关注云+社区

领取腾讯云代金券