netty 业务线程池

  1. netty中,Channel的实现一定是线程安全的。基于此,我们可以存储一个Channel的引用,并且在需要向远程端点发送数据时,通过这个引用来调用Channel相应的方法,即便当时有很多线程在使用它也不会出现多线程问题,而且,消息一定会按顺序发送出去。

  2. 不要把长时间执行耗时任务放入到EventLoop的执行队列中,因为它将会一直阻塞该线程所对应的所有Channel上的其他执行任务。
    如果我们需要进行调用或是耗时的操作,就需要使用一个专门的EventExcutor(业务线程池)

通常有两种实现方式:

  1. 在ChannelHandler的回调方法中,使用自己定义的业务线程池,这样就可以实现异步调用。
  2. 在pipeline.addLast时,调用ChannelPipeline addLast(EventExecutorGroup group, ChannelHandler... handlers);,让handler上的所有回调方法都由该EventExecutorGroup执行。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容