Java NIO学习与记录(七): Reactor单线程模型的实现
一、Selector&Channel 1.1:各种channel 写这个模型需要提前了解Selector以及Channel,之前记录过FileChannel,除此之外还有以下几种Channel: ServerSocketChannel: 用于监听新的TCP连接的通道,负责读取&响应,通常用于服务端的实现。 SocketChannel: 用于发起TCP连接,读写网络中的数据,通常用于客户端的实现。 DatagramChannel: 上述两个通道基于TCP传输协议,而这个通道则基于UDP,用于读写网络中的数据。 FileChannel: 从文件读取数据。 本篇重点放在ServerSocketChannel和SocketChannel上,大部分客户端/服务端为了保证数据准确性,都是基于TCP传输协议实现的,由于使用Selector注册必须要求被注册的Channel是非阻塞模式的,因此FileChannel由于没有非阻塞模式(无法设置configureBlocking(false)),没办法和注册到selector。 1.2:selector Selector是个通道注册器(用法会在程序里标注),是实现Reactor模型的关键,多个通道均可以注册到Selector,Selector负责监听每个Channel的几个事件:连接就绪、写就绪、读就绪