NIO底层是用Selector、Channel和ByteBuffer来实现的。主线程在循环使用select方法进行阻塞等待,当有acceptable、readable或者writable事件发生的时候,循环就会往下走,将对应的事件交给对应的事件处理器进行处理。
他可以多线程的,可以有多个accept()线程和多个worker线程。
补充
在NIO中,使用了多路复用器Selector来实现同步非阻塞的IO操作。Selector是一个可以监控多个通道(Channel)是否有数据可读或可写的对象,当一个或多个Channel准备好读或写时,Selector会通知程序进行读写操作,而不是像BIO一样阻塞等待IO操作完成。
在NIO中,主线程通常只有一个,但是可以使用Selector来管理多个Channel,实现多个连接的非阻塞读写操作。当有多个Channel需要进行IO操作时,Selector会轮询这些Channel,检查它们的状态是否可读或可写,如果有可读或可写的Channel,就将其加入到一个已选择键集合中,等待程序处理。这样,一个线程就可以同时处理多个Channel,提高了系统的并发处理能力。
THE END
暂无评论内容