Netty
Netty
BIO、NIO、AIO 的区别
BIO、AIO和NIO是Java中不同的I/O模型,它们在处理输入输出操作时有不同的特点。
BIO: 阻塞式的I/O模型。当一个线程执行I/O操作时,如果数据还没准备好,这个线程会被阻塞,直到数据到达。适合连接数较少且固定的场景,但扩展性较差。在Java中用ServerSocket和Socket的accpet方法,用来阻塞,等待客户端连接。NIO: 非阻塞的I/O模型。NIO使用缓冲区和通道来处理数据,提高了I/O操作的效率。支持面向缓冲区的读写操作,可以处理大量并发的连接。在java.nio包中提供了Selector、Channel等类实现高效的非阻塞IOAIO: 异步I/O模型,从Java 7开始引入。在AIO中,I/O操作被发起后,线程可以继续执行其他任务,一旦I/O操作完成,操作系统会通知线程。适合需要处理大量并发I/O操作,且希望避免I/O操作阻塞线程的场景。在Java中通过AsynchronousSocketChannel类来实现异步IO- 使用场景:
BIO适合低并发、连接数较少的应用。NIO适合高并发、需要处理大量连接的应用。AIO适合需要高性能、异步处理I/O操作的场景。
BIO就是上面网络编程中的样子,一个连接一个线程,
NIO通过使用selector实现多路复用,一个线程管理多个连接,通过事件驱动(accept,read)
一般使用Netty框架,基于NIO,即时通讯,网关。
AIO的话:Java中使用较少,Linux下性能不如NIO
总结来说javaAPI给我们提供了网络连接的各种api已经帮我们处理好了网络连接,序列化处理等各种操作了,我们可以通过背八股文来了解实现细节,然后使用java原生的NIO包来维护一个服务端很麻烦,所以Netty就出现了一个网络超级工具包,专门帮我们处理网络编程的类似于Mybatis
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 oyy0v0😼!
评论
