我正在使用Netty 4.x,我想知道两者之间有什么区别。
ChannelGroup channels = new DefaultChannelGroup (GlobalEventExecutor.INSTANCE);
和
ArrayList<Channel> channels = new ArrayList<>()
答案 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方法,然后再次循环并等待它们的关闭将来,以确保您在循环