netty是一个nio框架,相比于直接使用java的nio api。netty做了做了很多工作,netty 在其之上 增加了可靠性(处理了各种网络失败,闪断,重连。修复nio 的bug ),易用性(方便的粘包,拆包。并预置多重编码功能)
如果你想吃一份宫保鸡丁盖饭:
同步阻塞:你到饭馆点餐,然后在那等着,还要一边喊:好了没啊!
同步非阻塞:在饭馆点完餐,就去遛狗了。不过溜一会儿,就回饭馆喊一声:好了没啊!
异步阻塞:遛狗的时候,接到饭馆电话,说饭做好了,让您亲自去拿。
异步非阻塞:饭馆打电话说,我们知道您的位置,一会给你送过来,安心遛狗就可以了。
阻塞/非阻塞:关注线程运行状态
阻塞:执行到某个函数卡主,等待返回
例如:执行网络io的read函数
优点:延时低
缺点:阻塞的时候不嫩干别的事情
非阻塞:执行代码时不会卡主
同步/异步:关注消息通知机制
同步:主动轮询是否就绪
异步:就绪后通知程序
例如:使用回调函数
缺点:
破坏程序的顺序性,任务的依赖性
netty工作流
Demo