netty案例,netty4.1基础入门篇零《初入JavaIO之门BIO、NIO、AIO实战练习》 作者:小傅哥
博客: https://bugstack.cn (opens new window) 沉淀、分享、成长,让自己和他人都能有所收获!😄 # 前言介绍 在Java中,提供了一些关于使用IO的API,可以供开发者来读写外部数据和文件,我们称这些API为Java IO。IO是Java中比较重要知识点,且比较难学习的知识点。并且随着Java的发展为提供更好的数据传输性能,目前有三种IO共存;分别是BIO、NIO和AIO。
Java BIO[Blocking I/O] | 同步阻塞I/O模式 BIO 全称Block-IO 是一种同步且阻塞的通信模式。是一个比较传统的通信方式,模式简单,使用方便。但并发处理能力低,通信耗时,依赖网速。 Java NIO[New I/O] | 同步非阻塞模式 Java NIO,全程 Non-Block IO ,是Java SE 1.4版以后,针对网络传输效能优化的新功能。是一种非阻塞同步的通信模式。 NIO 与原来的 I/O 有同样的作用和目的, 他们之间最重要的区别是数据打包和传输的方式。原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。 面向流的 I/O 系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。 面向块的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的 I/O - 缺少一些面向流的 I/O 所具有的优雅性和简单性。 Java AIO[Asynchronous I/O] | 异步非阻塞I/O模型 Java AIO,全程 Asynchronous IO,是异步非阻塞的IO。是一种非阻塞异步的通信模式。在NIO的基础上引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。 如下我们将分别对三种IO进行案例演示,通过对三种的IO的认知来方便学习后续的Netty知识。 # 开发环境 jdk1.8【jdk1.7及以上,AIO需要1.7】 NetAssist 网络调试助手 获取:关注公众号【bugstack虫洞栈】回复【NetAssist】 # 代码示例
itstack-demo-netty-1-00
└── src
├── main
│ └── java
│ └── org.itstack.demo.netty
│ ├── aio
│ │ ├── client
│ │ │ ├── AioClient.java
│ │ │ └── AioClientHandler.java
│ │ ├── server
│ │ │ ├── AioServer.java
│ │ │ ├── AioServerChannelInitializer.java
│ │ │ └── AioServerHandler.java
│ │ ├── ChannelAdapter.java
│ │ ├── ChannelHandler.java
│ │ └── ChannelInitializer.java
│ ├── bio
│ │ ├── client
│ │ │ ├── BioClient.java
│ │ │ └── BioClientHandler.java
│ │ ├── server
│ │ │ ├── BioServer.java
│ │ │ └── BioServerHandler.java
│ │ ├── ChannelAdapter.java
│ │ └── ChannelHandler.java
│ └── nio
│ ├── client
│ │ ├── NioClient.java
│ │ └── NioClientHandler.java
│ ├── server
│ │ ├── NioServer.java
│ │ └── NioServerHandler.java
│ ├── ChannelAdapter.java
│ └── ChannelHandler.java
└── test
└── java
└── org.itstack.demo.test
└── ApiTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38