ChannelGroup 和 ArrayList<Channel> 有什么区别?
What is the difference between ChannelGroup and ArrayList<Channel>?
我正在使用 Netty 4.x,我想知道两者之间有什么区别。
ChannelGroup channels = new DefaultChannelGroup (GlobalEventExecutor.INSTANCE);
和
ArrayList<Channel> channels = new ArrayList<>()
一个ChannelGroup
基本上是一个"enhanced"列表。
对于普通的 Java 列表,您必须在频道关闭时手动注销频道,ChannelGroup
会为您完成此操作
如果要发送消息,您需要手动循环遍历普通的 java 列表,但是 ChannelGroup
带有自己的写入方法。如:
ChannelGroup recipients = ...;
recipients.write(Unpooled.copiedBuffer(
"Service will shut down for maintenance in 5 minutes.",
CharsetUtil.UTF_8));
使用 ChannelGroup
基本上可以让你的生活更轻松,因为它有很多实用方法,来自 javadoc 的关闭示例:
recipients.close().awaitUninterruptibly();
如果你想在使用ArrayList
时关闭所有通道,你需要循环遍历所有通道,调用他们的关闭方法,然后再次循环等待他们关闭的未来,确保你永远不会修改循环列出
我正在使用 Netty 4.x,我想知道两者之间有什么区别。
ChannelGroup channels = new DefaultChannelGroup (GlobalEventExecutor.INSTANCE);
和
ArrayList<Channel> channels = new ArrayList<>()
一个ChannelGroup
基本上是一个"enhanced"列表。
对于普通的 Java 列表,您必须在频道关闭时手动注销频道,ChannelGroup
会为您完成此操作
如果要发送消息,您需要手动循环遍历普通的 java 列表,但是 ChannelGroup
带有自己的写入方法。如:
ChannelGroup recipients = ...;
recipients.write(Unpooled.copiedBuffer(
"Service will shut down for maintenance in 5 minutes.",
CharsetUtil.UTF_8));
使用 ChannelGroup
基本上可以让你的生活更轻松,因为它有很多实用方法,来自 javadoc 的关闭示例:
recipients.close().awaitUninterruptibly();
如果你想在使用ArrayList
时关闭所有通道,你需要循环遍历所有通道,调用他们的关闭方法,然后再次循环等待他们关闭的未来,确保你永远不会修改循环列出