零基础java自学流程-Java语言高级551

本文详细介绍了Java中的IO、NIO和AIO(异步IO)的区别和应用场景。IO是阻塞同步模式,适合简单场景;NIO是非阻塞同步,通过多路复用器提高吞吐量;AIO则是非阻塞异步,提供异步通道实现,提高效率。文章还给出了简单的通信伪代码和Netty框架的相关图解,帮助理解各种IO模型的工作原理。

三、AIO理解

      异步无非是通知系统做一件事情。然后忘掉它,自己做其他事情去了。很多时候系统做完某一件事情后需要一些后续的操作。

AIO 也叫NIO2.0 是一种非阻塞异步的通信模式。在NIO的基础上引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。

AIO流程图

      AIO 并没有采用NIO的多路复用器,而是使用异步通道的概念。其read,write方法的返回类型都是Future对象。而Future模型是异步的,其核心思想是:去主函数等待时间。

AIO模型中通过AsynchronousSocketChannel和AsynchronousServerSocketChannel完成套接字通道的实现。非阻塞,异步。

四、总结

1 IO,NIO,AIO区别

    IO 阻塞同步通信模式,客户端和服务器连接需要三次握手,使用简单,但吞吐量小。

    NIO 非阻塞同步通信模式,客户端与服务器通过Channel连接,采用多路复用器轮询注册的Channel。提高吞吐量和可靠性。

    AIO 非阻塞异步通信模式,NIO的升级版,采用异步通道实现异步通信,其read和write方法均是异步方法。

2 Stock通信的伪代码实现流程

      服务器绑定端口:server = new ServerSocket(PORT)

      服务器阻塞监听:socket = server.accept()

      服务器开启线程:new Thread(Handle handle)

      服务器读写数据:BufferedReader PrintWriter

     客户端绑定IP和PORT:new Socket(IP_ADDRESS, PORT)

     客户端传输接收数据:BufferedReader PrintWriter

3 什么是同步阻塞BIO,同步非阻塞NIO,异步非阻塞AIO

     同步阻塞IO : 用户进程发起一个IO操作以后,必须等待IO操作的真正完成后,才能继续运行。

     同步非阻塞IO: 用户进程发起一个IO操作以后,可做其它事情,但用户进程需要经常询问IO操作是否完成,这样造成不必要的CPU资源浪费。

     异步非阻塞IO: 用户进程发起一个IO操作然后,立即返回,等IO操作真正的完成以后,应用程序会得到IO操作完成的通知。类比Future模式。

4、小结

     1)BIO模型中通过Socket和ServerSocket完成套接字通道实现。阻塞,同步,连接耗时。

    2) NIO模型中通过SocketChannel和ServerSocketChannel完成套接字通道实现。非阻塞/阻塞,同步,避免TCP建立连接使用三次握手带来的开销。

    3) AIO模型中通过AsynchronousSocketChannel和AsynchronousServerSocketChannel完成套接字通道实现。非阻塞,异步。

再附上netty权威指南书中一张图、

 


尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili尚学堂给同学们带来全新的Java300集课程啦本课程为Java300集2022版第一季,配合最新版的Java课程,所有视频重新录制,课件所有图形做了重新绘制和配色,图解学习Java,让学习成为一种享受本套教程专门为零基础学员而制,适合准备入行Java开发的零基础学员,视频中穿插多个实战项目。每一个知识点都讲解的通俗易懂,由浅入深。不仅适用于零基础的初学者,有经验的程序员也可做巩固学习。后续课https://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.999.0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值