为了账号安全,请及时绑定邮箱和手机立即绑定

netty在需要创建多个ChannelGroup的时候该如何如何设置线程池

netty在需要创建多个ChannelGroup的时候该如何如何设置线程池

慕妹3242003 2018-11-13 13:44:02
问题描述当用netty的ChannelGroup分组进行广播时,如果有多个组的话,在初始化ChannelGroup时参数中的EventExecutor该如何设置?是直接GlobalEventExecutor.INSTANCE让所有ChannelGroup公用同一个?还是说每个group再new一个,如果要给每个group分配不同的又该用哪个类?问题出现的环境背景及自己尝试过哪些方法正在写一个im应用,想用一个ChannelGroup对应一个群组的方式来实现向不同的群组发送不同的消息但是完全搜不到有关创建多个ChannelGroup时该如何做的信息大部分都是下么这样,只创建一个,然后直接向所有连接广播 private static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);但是如果有多个组该怎么办?还是说类似于下面这样自己去维护一个组和连接之间的关系,然后在广播时手动的去遍历一个组向其中的所有channel写入消息?for(Channel ch:map.get(groupid)){     ch.writeAndFlush(msg) }
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

ChannelGroup的EventExecutor主要是用来异步通知使用的。

比如:ch.writeAndFlush(msg)是一个异步调用,调用后立即会返回一个ChannelGroupFuture,当异步操作完成,会使用EventExecutor来执行在ChannelGroupFuture里添加的那些Listener。

所以如果你的程序里没有大量回调,并且回调中都是很简单的非阻塞调用,使用GlobalEventExecutor.INSTANCE完全够用。

不过在Netty源码中,有大量的Future都是使用的这个Executor,所以我觉得自己new一个或者每次使用的时候从自己的EventGroup中拿一个


查看完整回答
反对 回复 2018-11-13
  • 1 回答
  • 0 关注
  • 2749 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号