用户工具


netty是一个nio框架,相比于直接使用java的nio api。netty做了做了很多工作,netty 在其之上 增加了可靠性(处理了各种网络失败,闪断,重连。修复nio 的bug ),易用性(方便的粘包,拆包。并预置多重编码功能)

如果你想吃一份宫保鸡丁盖饭:

  • 同步阻塞:你到饭馆点餐,然后在那等着,还要一边喊:好了没啊!
  • 同步非阻塞:在饭馆点完餐,就去遛狗了。不过溜一会儿,就回饭馆喊一声:好了没啊!
  • 异步阻塞:遛狗的时候,接到饭馆电话,说饭做好了,让您亲自去拿。
  • 异步非阻塞:饭馆打电话说,我们知道您的位置,一会给你送过来,安心遛狗就可以了。
  • 阻塞/非阻塞:关注线程运行状态
    • 阻塞:执行到某个函数卡主,等待返回
      • 例如:执行网络io的read函数
      • 优点:延时低
      • 缺点:阻塞的时候不嫩干别的事情
    • 非阻塞:执行代码时不会卡主
      • 例如:使用future, 然后调用其get函数
      • 优点:执行任务的同时,处理其他事情。适合场景:任务A(非阻塞执行)→任务C; 任务B→任务C
  • 同步/异步:关注消息通知机制
    • 同步:主动轮询是否就绪
      • 例如:使用future,然后轮询isDone()函数
      • 缺点:效率低,延时大。可能在2次轮询间任意时间点就绪
    • 异步:就绪后通知程序
      • 例如:使用回调函数
      • 缺点:破坏程序的顺序性,任务的依赖性

        netty工作流

Demo