java通信模型

版权声明:转载请注明:beOkWithAnything总结 https://blog.csdn.net/swq463/article/details/82118409

BIO通信模型(同步阻塞IO 1:1):
    一个独立的Acceptor线程负责监听客户端的连接,为每个客户端创建一个新的线程进行处理,处理完返回结果并销毁线程(一请求一应答),线程是java虚拟机宝贵的系统资源,线程数增加系统性能集聚下降,再增加访问量会出现线程堆栈溢出,线程创建失败的问题,导致‘进程’死掉

伪异步IO通信(同步阻塞IO m:n):
    有一个线程池,m个客户端来了以后该线程池的消息队列中最大只能有n个线程,无论多少个客户端并发访问都不会导致资源耗尽和宕机,但是会造成线程池阻塞,比BIO强在不会创建多个线程

NIO通信(非阻塞同步IOm:1):
    通过缓冲区Buffer对象(包含要写入或读出的数据)进行操作,所有数据都是缓冲区处理的,读到缓冲区,写到缓冲区。网络数据通过通道Channel读取和写入,通道是双向的,可以读写二者同时进行,流是单向的(输入输出流)

AIO通信(非阻塞异步通信IO m:0):
    主动通知程序,读写方法异步(不懂),简化了NIO的编程模型

Netty是业界最流行的NIO框架之一,用Netty来构建高性能的异步通信能力
    

猜你喜欢

转载自blog.csdn.net/swq463/article/details/82118409