【Java NIO 简例】Java NIO 简述

 

原文:《Java NIO Tutorial》、《Java NIO Overview

Java NIO(New IO) 是 Java 1.4 引入的 IO API。它提供了一种不同的IO操作方式,用于替代原标准的Java IO 和 网络通信API。

Java NIO包含三个核心组件:Channel、Buffer、Selector。

 

Channel 和 Buffer

标准IO API操作的是 字节流 和 字符流。

NIO 操作的是 channel 和 buffer —— 从 channel 读取数据到 buffer,将 buffer 中的数据写入到 channel。

channel 有点像 stream。

 

常见的 channel 有 FileChannel、DatagramChannel、SocketChannel、ServerChannel、ServerSocketChannel。

原数据类型中,除了boolean,其它都有相应的buffer。如,ByteBuffer、CharBuffer、IntBuffer等。还有与内存映射文件一起使用的 MappedByteBuffer。

 

非阻塞 IO

NIO可以实现非阻塞型IO。如:

  • 一个线程先告诉 channel 读取数据到 buffer;

  • 在这个读取过程中,该线程可以执行其它操作;

  • 一旦完成该读取过程,线程可以继续执行后续操作。

数据写入是的非阻塞模式也类似。

 

Selector

一个 selector 可以监测多个 channel 的事件(如,建立连接、数据到达等)。这样,单个线程可以监测多个 channel 的。

该模式适用于连接数(channel)很多,且每个连接的数据流量都比较低的应用。如,聊天系统的服务端。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值