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