java - ChannelGroup 和 ArrayList 有什么区别?
问题描述
我正在使用 Netty 4.x,我想知道它们之间有什么区别。
ChannelGroup channels = new DefaultChannelGroup (GlobalEventExecutor.INSTANCE);
和
ArrayList<Channel> channels = new ArrayList<>()
解决方案
AChannelGroup
基本上是一个“增强”列表。
使用普通的 Java 列表,您必须在频道关闭时手动取消注册,ChannelGroup
这是为您做的
如果要发送消息,则需要手动遍历普通的 java 列表,但是ChannelGroup
带有自己的 write 方法。例如:
ChannelGroup recipients = ...;
recipients.write(Unpooled.copiedBuffer(
"Service will shut down for maintenance in 5 minutes.",
CharsetUtil.UTF_8));
使用 aChannelGroup
基本上可以让您的生活更轻松,因为它带有许多实用方法,javadoc中的一个示例用于关闭:
recipients.close().awaitUninterruptibly();
如果你想在使用时关闭所有通道ArrayList
,你需要遍历所有通道,调用它们的 close 方法,然后再次循环并等待它们的关闭期货,确保你在循环时永远不会修改列表
推荐阅读
- powershell - 如何知道您可以从工作中订阅哪些事件?
- typescript - Typeorm getRepository mockImplementation 返回模拟的 findOne 方法
- php - 根据使用 php mysql 显示的项目数量添加计数器
- swagger-ui - 存在 UUID 和日期时间时的 OpenAPI 3.0 示例值格式问题
- r - R - 将 i 个逗号分隔 ID 的字符向量分解为数据帧的 i 个离散向量
- c++ - 将纹理从一个 OpenGL 库复制到另一个库有哪些选择?
- sql - 仅当找到第 1 组时,来自两个组的 Redshift SQL 汇总量
- haskell - 使用列表推导对非负数的数字进行交叉总和
- python - 如何取消堆叠数据框
- javascript - 用于在特殊字符之间获取字符的 regExr 模式