一、了解Unix网络编程5种I/O模型
1.1、阻塞I/O
1.2、非阻塞I/O
1.3、I/O复用
1.4、信号驱动的I/O
1.5、异步I/O
二、Java IO模型
2.1、1:1同步阻塞IO通信模型
2.2、M:N形式的同步阻塞IO通信模型
2.3、非阻塞式IO模型(NIO) NIO+单线程Reactor模式
2.4、非阻塞式IO模型(NIO) NIO+多线程Reactor模式
2.5、NIO+主从多线程Reactor模式
2.6、总结
同步IO和异步IO的区别就在于:数据访问的时候进程是否阻塞! 阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回!
三、NIO和Reactor模型
3.1 java NIO核心组件
3.2 Java NIO Channel
(1)分类
Java NIO Channel里又分:FileChannel,DatagramChannel,SocketChannel,ServerSocketChannel四种。
(2) Java NIO 通道之间的数据传输
在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel传输到另外一个channel。
3.3 Java NIO Buffer
(1)各个操作节点capacity,position,limit的变化:
A:开辟缓冲区
B:put() 方法
C:flip() 方法
d:rewind() 方法
(2)Java NIO Buffer的读写模型:
3.4 Java NIO Selector
Channel注册事件(包括connect read write事件),NIOSelector选择,处理事件的流程图:
3.5 Reactor模型
(1)NIO+单线程版
(2)NIO+多线程版
(3)NIO主从多线程
Reactor中的组件: