java NIO 非阻塞I/O编程

java NIO 非阻塞I/O编程


简介

NIO是New Input/Output的英文缩写,也被大多数用户认为是Non-blocking I/O,意为非阻塞IO.

NIO是在2002年jdk1.4时引入的,位于java.nio包中.


组成模块

Java NIO 由以下几个核心部分组成:

  • Selectors
  • Channels
  • Buffers

Selectors

Selectors

Selector是java的非阻塞I/O的关键实现,它负责轮询各个I/O操作,在任何时间进啊册任意的读操作或者写操作的完成状态.这样一个单一的线程便可以处理多个并发的连接.

要使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。

与阻塞I/O模型相比,这种模型能带来更好的资源管理:

  • 使用较少的线程便可以处理许多连接,因此也减少了内存管理和上下文切换所带来开销.

  • 当没有I/O操作需要处理的时候,线程也可以被用于其他任务.

Channels和Buffer

Channel是jav NIO的一个基本构造.
它代表一个实体的开发连接,如读操作和写操作.

可以把Channel看作是传入(入站)或者传出(出站)数据的载体.因此,它可以被打开或者被关闭,连接或者断开连接.

所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中.

channel-buffer

Channel和Buffer有好几种类型。下面是JAVA NIO中的一些主要Channel的实现:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值