netty系列文章
目录
netty系列文章
前言
一、netty概述和体系架构
第一章 异步和事件驱动
1.1 先了解下Java网络编程的两种 IO方式
前言
带着问题看书,直到你的问题被解决为止
一、netty概述和体系架构
第一章 异步和事件驱动
1.1 先了解下Java网络编程的两种 IO方式
1.1 先了解下Java网络编程的两种 IO方式
阻塞 IO
可以想想有什么缺点呢?
1、这样的方式,一个IO只能处理一个连接,如果有多个,是不是得创建多个IO,处理多个连接。
当多个IO线程处于休眠,等待输入或者输出数据,这会造成资源浪费。
2、需要为每个线程的调用栈都分配内存(默认值大小:64KB-1MB,取决于操作系统).
3. 如果有大量的连接,很能在没有达到极限之前,线程上下文切换就会带出来资源的开销。
场景:在并发连接很小的时候,可以使用,多的情况下,便不再适用了。
要怎么解决呢?
这个时候我们可以了解下,java NIO,上图
非阻塞 NIO
Selector 选择器 java实现非阻塞IO的关键
它做什么呢?
它可以让Thread知道哪组非阻塞的Socket已经可以进行I/O操作了,它可以在任何时间检查任意的读操作或写操作的完成状态。因此一个Thread便可以处理多个并发的连接。
解决了什么问题呢?
1、使用较少的线程便可以处理多个连接。减少内存管理和上下文切换带来的资源开销。
2、其中的Socket没有I/O操作时,可以去执行其它已经准备好进行I/O的任务。
还有什么缺点呢?
当在高负载下要 可靠和高效 的 处理 和 调度I/O操作是比较繁琐和容易出错的,NIO也不一定可以保证。所以让我们看看netty可以带给我们什么吧。



