• 布小丫学编程
    2020-02-09
    当连接客户端数很多时,增大NioEventLoopGroup的线程数。
    当某个handler处理很慢时,通过使用UnorderedThreadPoolEventExecutor线程池来处理该Handler。

    这样理解是否合理?
    
    
  • 灿烂明天
    2019-12-01
    老师,我想问下,我按照你视频去试,设置了那个un开头的线程池,还是用了默认的nioeventloopgroup,这是什么原因吗?

    作者回复: 不知道你是不是有点误解了,给一个handler设置线程池,只对那个绑定的handler有效,对其他的处理无效,比如接受连接,还是用默认的nio event loop group.

    
    
  • 鱼向北游
    2019-11-29
    为了更解耦也可以把请求入队列,然后其他业务消费,消费完再找channel发回去 这个unordered线程池以前用的比较少 涨知识了

    作者回复: 其实大多都是应该如此调整的,或者做类似的单独定义线程池的,为什么?因为我们的业务大多都是io密集型或者较长返回的,但是呢,业务不属于netty层,所以他不会提前帮我们定义好,所以我们自己才要定义下,实际中,我们用的大都是自己单独定义一个线程池,而不是netty自带的(用它也没问题),就是ppt提的另外一种,因为可以随心所欲。

    
    
  • 姚远
    2019-11-28
    老师第二种情况使用nioeventloop当作threadpool的时候 因为一个channel会绑定loop中的一个线程 所以变成串行之行了。如果把客户端改成多个channel发送就会使用loop里的其他线程了吧。

    作者回复: 在传入参数nioeventloop情况下,还是不会的,主要和这个参数pinEventExecutor(ChannelOption.SINGLE_EVENTEXECUTOR_PER_GROUP)有关系,childExecutors.get(group)这个key是group,并不是channel,所以多个channel触发的服务器处理,还是单个EventExecutor。

    
    
  • 飞翔
    2019-11-28
    老师 我想问一下 用线程池之后, 那么nioeventloop 线程就执行完了, 那等线程池里的线程读取数据库得到数据 返回的时候 怎么找到他要发送的channel呀

    作者回复: 估计你问的是非netty自带的线程池的方式,你把消息和ctx一起封装成一个新对象比如Task传给线程池,然后消息执行完成后。就可以直接用ctx来写了,那个就有绑定的channel.

     1
    
我们在线,来聊聊吧