资讯专栏INFORMATION COLUMN

Linux I/O model 和 JAVA NIO/AIO

Zack / 3228人阅读

摘要:之后推出的是,是面向缓冲区的,数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。之后的又引入了,对应的可以实现模式。该接口常被用于高效的网络文件的数据传输和大文件拷贝。进阶五模型从到和模式

Linux I/O model

blocking I/O

non blocking I/O

I/O multiplexing (select and poll)

signal driven I/O (SIGIO)

asynchronous I/O (the POSIX aio_ functions)

Chapter 6. I/O Multiplexing: The select and poll Functions
JAVA实现

JAVA最早实现是IO是blocking I/O,是面向流的,每次从流中读一个或多个字节,直至读取所有字节,没有被缓存在任何地方,且它不能前后移动流中的数据。之后推出的NIO是non blocking I/O,是面向缓冲区的,数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。同时,借助于Selectors,它还可以实现I/O multiplexing,即reactor模式。之后的NIO 2.0又引入了asynchronous I/O,对应的可以实现Proactor模式。

zero copy

Java NIO中提供的FileChannel拥有transferTo和transferFrom两个方法,可直接把FileChannel中的数据拷贝到另外一个Channel,或者直接把另外一个Channel中的数据拷贝到FileChannel。该接口常被用于高效的网络/文件的数据传输和大文件拷贝。在操作系统支持的情况下,通过该方法传输数据并不需要将源数据从内核态拷贝到用户态,再从用户态拷贝到目标通道的内核态,同时也避免了两次用户态和内核态间的上下文切换,也即使用了“零拷贝”,所以其性能一般高于Java IO中提供的方法。

Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77879.html

相关文章

  • Java NIO浅析

    摘要:阻塞请求结果返回之前,当前线程被挂起。也就是说在异步中,不会对用户线程产生任何阻塞。当前线程在拿到此次请求结果的过程中,可以做其它事情。事实上,可以只用一个线程处理所有的通道。 准备知识 同步、异步、阻塞、非阻塞 同步和异步说的是服务端消息的通知机制,阻塞和非阻塞说的是客户端线程的状态。已客户端一次网络请求为例做简单说明: 同步同步是指一次请求没有得到结果之前就不返回。 异步请求不会...

    yeooo 评论0 收藏0
  • java-netty-Netty in Action 5th-ch1-Netty and Java

    摘要:一个多路复用器可以负责成千上万的通道,没有上限。不需要通过对多路复用器对注册的通道进行轮询操作即可实现异步读写,从而简化编程模型。同时,支持支持如果是怎么办最后,到目前位置,支持不支持二无法扩展作为的核心,无法扩展,私有构造函数。 前言 netty 学习 基于 netty in action 5th, 官网资料,网络博客等 1.1 Why Netty? netty 是一个中间层的抽象 ...

    LeviDing 评论0 收藏0
  • JDK10都发布了,nio你了解多少?

    摘要:而我们现在都已经发布了,的都不知道,这有点说不过去了。而对一个的读写也会有响应的描述符,称为文件描述符,描述符就是一个数字,指向内核中的一个结构体文件路径,数据区等一些属性。 前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 本来我预想是先来回顾一下传统的IO模式的,将传统的IO模式的相关类理清楚(因为IO的类很多)。 但是,发现在整理的过程已...

    YFan 评论0 收藏0
  • JAVA IO BIO NIO AIO

    摘要:三同步非阻塞式以块的方式处理数据面向缓存区的采用多路复用模式基于事件驱动是实现了的一个流行框架,的。阿里云分布式文件系统里用的就是。四异步非阻塞式基于事件驱动,不需要多路复用器对注册通道进行轮询,采用设计模式。 一、什么是IO IO 输入、输出 (read write accept)IO是面向流的 二、BIO BIO是同步阻塞式IO 服务端与客户端进行三次握手后一个链路建立一个线程面...

    freecode 评论0 收藏0
  • JAVA IO BIO NIO AIO

    摘要:三同步非阻塞式以块的方式处理数据面向缓存区的采用多路复用模式基于事件驱动是实现了的一个流行框架,的。阿里云分布式文件系统里用的就是。四异步非阻塞式基于事件驱动,不需要多路复用器对注册通道进行轮询,采用设计模式。 一、什么是IO IO 输入、输出 (read write accept)IO是面向流的 二、BIO BIO是同步阻塞式IO 服务端与客户端进行三次握手后一个链路建立一个线程面...

    sshe 评论0 收藏0

发表评论

0条评论

Zack

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<