第一章:Netty之路: IO演变

本文探讨了Linux的五种IO模型:阻塞、非阻塞、IO多路复用、信号驱动和异步IO,并详细介绍了IO多路复用技术中的epoll特性。在Java NIO方面,从JDK1.4到JDK1.7的演进,包括ByteBuffer、Pipe、Selector、FileChannel等,并指出其在API能力和异步IO上的不足。
摘要由CSDN通过智能技术生成

在java1.4之前,java对IO操作并不友好.主要问题如下:

  1. 没有数据缓冲区,IO性能存在问题
  2. 没有C和C++中的Channel概念
  3. 同步阻塞IO,通常会导致通信线程长时间阻塞
  4. 支持字符集有限,硬件可移植性不好

Linux网络模型

Linux的内核将所有的外部设备看做一个文件夹操作,对于一个文件的读写都会调用内核系统命令,返回一个file description

根据Unix网络编程对IO模型分类,主要分为以下5种IO模型:

1.阻塞IO

最常用的IO模型,缺省情况下,所有文件操作都是阻塞的.

2.非阻塞IO

与阻塞IO不一样的地方是recvform从应用层到内核的时候,都会有单独的线程轮询检测EWOULDBLOCK状态来判断内核是否有数据来.

3.IO多路复用技术:select/poll

Linux所提供的select/poll中,进程将一个或多个fd传递给select或poll系统调用,阻塞到select操作上.系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值