ChannelGroup和ArrayList <channel>有什么区别?

时间:2019-02-24 10:39:37

标签: java netty

我正在使用Netty 4.x,我想知道两者之间有什么区别。

ChannelGroup channels = new DefaultChannelGroup (GlobalEventExecutor.INSTANCE);

ArrayList<Channel> channels = new ArrayList<>()

1 个答案:

答案 0 :(得分:1)

ChannelGroup基本上是一个“增强”列表。

使用普通的Java列表,您必须在频道关闭时手动注销,ChannelGroup会为您完成

如果要发送消息,则需要手动循环访问普通的Java列表,但是ChannelGroup带有其自己的write方法。例如:

ChannelGroup recipients = ...;
recipients.write(Unpooled.copiedBuffer(
     "Service will shut down for maintenance in 5 minutes.",
     CharsetUtil.UTF_8));

使用ChannelGroup可以使您的生活更加轻松,因为它附带了许多实用程序方法,例如javadoc中的示例:

recipients.close().awaitUninterruptibly();

如果您想在使用ArrayList时关闭所有频道,则需要遍历所有频道,调用它们的close方法,然后再次循环并等待它们的关闭将来,以确保您在循环