简介
传统的oio(old I/O)编程,与nio异步编程在Api级别差别比较大,但是netty在公共API做了很好的封装,这比在传统的使用JDK编程要更简单。
使用传统的jdk来实现blocking与non-blocking
实现blocking
1 | public class PlainOioServer { |
- 使用OIO只能支持中等级别的并发,并不能支持上万的连接
实现NIO
1 | public class PlainNioServer { |
比较
可以看出传统的OIO与NIO相比来说差距很大,所以对于编程来说,是需要重写的。
使用netty来实现
同步
1 | public class NettyOioServer { |
异步
1 | public class NettyNioServer { |
transport API
ChannleHandler包含以下传统使用:
- channel是线程安全的
- 将数据转换类型
- 提供异常通知
- 提供channle active与 inactive的通知
- 提供当channle注册或者从eventLoop注销
linux使用epoll 本地非阻塞传输、可以通过本地传输通过JVM、内部传输可以测试应用逻辑
包含的传输
状态的改变
netty支持的OIO实现
通过使用很短时间间隔获取结果,如果未获取到则抛出异常,来继续进行事件循环来实现OIO
总结 summary
在这一张主要讨论了传,输并讨论了传输行为的各种最小需求,因为不是所有的传输在给定的java版本以及同样类型适用于特定的os