随笔分类 -  Java NIO

NIO网络编程
摘要:前言 前面的文章讲解了I/O 模型、缓冲区(Buffer)、通道(Channel)、选择器(Selector),这些都是关于NIO的特点,偏于理论一些,这篇文章LZ将通过利用这些知识点来实现NIO的服务器和客户端,当然了,只是一个简单的demo,但是对于NIO的学习来说,足够了,麻雀虽小但五脏俱全。 阅读全文

posted @ 2018-11-21 10:51 AoTuDeMan 阅读(173) 评论(0) 推荐(0)

AIO(异步IO)
摘要:前言 AIO是异步IO的缩写,即Asynchronized IO。虽然NIO在网络操作中,提供了非阻塞的方法,但是NIO的IO行为还是同步的,对于NIO来说,我们的业务线程是在IO操作准备好时,得到通知,接着就由这个线程自行进行IO操作,IO操作本身还是同步的。 但是对于AIO来说,则更加的进了一步 阅读全文

posted @ 2018-11-20 16:16 AoTuDeMan 阅读(1622) 评论(0) 推荐(0)

选择器(Selector)
摘要:概述 Selector一般称为选择器,也可以翻译为多路复用器,是Java NIO核心组件之一,主要功能是用于检查一个或者多个NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个Channel(通道),当然也可以管理多个网络连接。 使用Selector的好处在于,可以使用 阅读全文

posted @ 2018-11-19 10:52 AoTuDeMan 阅读(1260) 评论(0) 推荐(0)

通道(Channel)
摘要:层次结构图 从上图可以看出,Channel是所有类的父类,它定义了通道的基本操作。从Channel引申出的其他接口都是面向字节的子接口,这也意味着通道只能在字节缓冲区(ByteBuffer)上操作。 Channel和Buffer Channel和Buffer之间的关系,如下图所示: Channel中 阅读全文

posted @ 2018-11-15 15:48 AoTuDeMan 阅读(1366) 评论(0) 推荐(0)

缓冲区(Buffer)
摘要:什么是缓冲区? 定义: 缓冲区就是固定数量数据的容器,其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区像上一篇文章I/O 模型那样被写满和释放,对于每个非布尔原始数据类型都有一个缓冲区类,尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节,非字节缓冲区可 阅读全文

posted @ 2018-10-25 16:41 AoTuDeMan 阅读(2106) 评论(0) 推荐(0)

I/O 模型
摘要:Java传统IO,读取磁盘文件的数据过程大致如下图所示: 以FileInputStream类为例,对数据的读取进行说明。FileInputStream类有一个read(byte b[ ])方法,byte b[ ]就是我们用来存储读取到的数据,储存在用户空间的缓冲区。read(byte b[ ])方法 阅读全文

posted @ 2018-10-24 16:49 AoTuDeMan 阅读(292) 评论(0) 推荐(0)

导航