Java NIO概述(1)

Java NIO是一个从Java 1.4开始就可以代替标准Java IO API的IO API,Java NIO提供了与标准IO不同的IO工作方式。

Java NIO:通道和缓冲区(Channels and Buffers)

标准的IO是基于字节流和字符流进行操作的,而NOI是基于通道和缓冲区进行操作的。数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。

Java NIO: 非阻塞IONon-blocking IO

NIO为所有的原始类型提供缓存支持的数据容器(Boolean除外),使用它可以提供非阻塞式的高伸缩性网络。

Java NIO可以让你非阻塞的使用IO,因为NIO与单向的IO不同它的通道是双向的。

Java NIO: 选择器(Selectors)

Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。

Java NIO: 核心API

Java NIO 由 Channels、Buffers、Selectors几个核心组件组成。其它组件,如Pipe和FileLock,只是与三个核心组件共同使用的工具类。

Channel 

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

这些Channel的实现通道涵盖了UDP 和 TCP 网络IO,以及文件IO。

Buffer

  • ByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffer

这些Buffer覆盖了通过IO发送的基本数据类型:byte, short, int, long, float, double 和 char。Java NIO 还有一个 MappedByteBuffer,用于表示内存映射文件。

Selector

Selector允许单线程处理多个 Channel。以下是在一个单线程中使用一个Selector处理3个Channel的图示:

如要使用Selector时,需向Selector注册Channel,然后调用select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。这个方法一旦返回,线程就可以处理这些事件。

转载于:https://www.cnblogs.com/chen970826/p/10936948.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值