Reactor模型的Java NIO实现
实现Reactor模型可分为以下三种:
单线程模型
单Reactor多线程模型
主从Reactor多线程模型。
单线程模型Reactor单线程模型,指的是所有的IO操作都在同一个线程上面完成,线程的职责如下:
作为NIO服务端,接收客户端的TCP连接;
作为NIO客户端,向服务端发起TCP连接;
读取通信对端的请求或者应答消息;
向通信对端发送消息请求或者应答消息。
由于Reactor模式使用的是异步非阻塞IO,所有的IO操作都不会导致阻塞,理论上一个线程可以独立处理所有IO相关的操作。从架构层面看,一个NIO线程确实可以完成其承担的职责。例如,通过Acceptor接收客户端的TCP连接请求消息,链路建立成功之后,通过Dispatch将对应的ByteBuffer派发到指定的Handler上进行消息解码。用户线程可以通过消息编码通过NIO线程将消息发送给客户端。
Server端123456789101112131415161718192021222324252627282930313233343536373839public class Reactor1 {
...