Netty-NIO-案例
NIO非阻塞网络编程原理分析图

Java NIO全称Java non-blocking IO,是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO),是同步非阻塞的
NIO相关类都被放在java.nio包及子包下,并对原java.io包中的很多类进行改写
NIO有三大核心部分:Channel(通道)、Buffer(缓冲区)、Selector(选择器)
)
NIO是面向缓冲区的,或者说是面向 块 编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络
Java NIO的非阻塞模式,使一个线程从某通道发送请求或读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直到数据变的可以读取之前,该线程可以继续做其它的事情。非阻塞写也是如此,一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情
通俗理解:NIO是可以做到用一个线程来处理多个操作的。假设有10000个请求过来,根据实际情况,可以分配50或100个线程来处理。不像之前的阻塞IO那样,必须分配10000个
HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个不,而且并发请求的数量比HTTP1.1大了好几个数量级
Java NIO全称Java non-blocking IO,是指JDK提供的新API。从JDK1.4开始,Java提供了一系列改进的输入/输出的新特性,被统称为NIO(即New IO),是同步非阻塞的
NIO相关类都被放在java.nio包及子包下,并对原java.io包中的很多类进行改写
NIO有三大核心部分:Channel(通道)、Buffer(缓冲区)、Selector(选择器)
)
NIO是面向缓冲区的,或者说是面向 块 编程的。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络
Java NIO的非阻塞模式,使一个线程从某通道发送请求或读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直到数据变的可以读取之前,该线程可以继续做其它的事情。非阻塞写也是如此,一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情
通俗理解:NIO是可以做到用一个线程来处理多个操作的。假设有10000个请求过来,根据实际情况,可以分配50或100个线程来处理。不像之前的阻塞IO那样,必须分配10000个
HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个不,而且并发请求的数量比HTTP1.1大了好几个数量级
脏读
事务1:将某条记录的Age值从20修改为30
事务2:读取了事务1更新后的值:30
事务1:回滚,Age值恢复到20
事务2:读取的30就是一个无效值
不可重复读
事务1:读取Age值为20
事务2:将Age修改为30
事务1:两次读取Age值为30,和第一次值读取不一致
幻读
事务1:读取了Stu表中一部分数据
事务2:向Stu表中插入了新的行
事务1:读取Stu表时,多出了一些行
在Application上
1 | /** |
异步处理
1 | @Service |