一、Netty - ChannelGroup 和 ArrayList 有什么区别?
我正在使用 Netty 4.x,我想知道以下:ChannelGroup 和 ArrayList
ChannelGroup channels = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
和
ArrayList<Channel> channels = new ArrayList<>();
二、回答
ChannelGroup 基本上是一个“增强”列表。
使用普通的 Java 列表,您必须在通道关闭时手动取消注册通道,ChannelGroup 会为您完成此操作。
如果你想发送消息给每一个连上服务器的客户端,你需要手动循环一个普通的java列表,但是ChannelGroup有它自己的write方法。
比如:
ChannelGroup recipientsGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
// 向 Group 中每一个 channel 发送信息
recipientsGroup.writeAndFlush(Unpooled.copiedBuffer(
"Service will shut down for maintenance in 5 minutes.",
CharsetUtil.UTF_8));
使用 ChannelGroup 基本上可以让您的生活更轻松。
因为它带有许多实用方法,
来自 https://netty.io/4.0/api/io/netty/channel/group/ChannelGroup.html 的关闭示例:
recipientsGroup.close().awaitUninterruptically();
如果要在使用 ArrayList 时关闭所有通道,则需要循环所有通道,调用它们的 close 方法,然后再次循环并等待它们的关闭 future,确保在循环时永远不会修改列表。
ref
标签:Netty,ChannelGroup,列表,recipientsGroup,new,ArrayList From: https://www.cnblogs.com/eddyz/p/17847158.html