java - 从 ByteBuffer/Netty ByteBuff 并行/多线程读取

标签 java multithreading buffer netty nio

嘿嘿,

ByteBuffers 以及 netty 的 ByteBuff 使用索引来存储它们当前“所在”的位置。在我的应用程序开始时,我加载 ByteBuffers/ByteBuffs 中的多个文件以便稍后读取。此外,字节缓冲区在加载后是不可变的。我现在的问题是,多个客户端应该能够读取这些字节缓冲区,但因为它们使用相同读取器/写入器索引,所以它赢得了不工作。有没有一种简单的方法可以每个线程维护索引? netty 有一些“工具”来实现这个吗?

我已经了解到 nio ByteBuffers 不支持多线程,但是如果您只读取它们,情况也是如此吗?

基本上我只是在寻找一种通过netty非常快地发送存储在内存中的数据的方法。

最佳答案

您可以为每个新线程在 ByteBuf 上调用重复并使用返回的 ByteBuf。这些将共享相同的内容,但不相同的索引。

ByteBuf duplicate = ByteBuf.duplicate();

关于java - 从 ByteBuffer/Netty ByteBuff 并行/多线程读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19797727/

相关文章:

java 8 按不同计数分组

java - RGB 到 CIE 颜色转换

linux - uClibc 共享库在 exit() 期间卸载

c - fprintf 将前 k 个字符写入缓冲区

c - 一个char数组可以有多少个字符?

java - @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) 不适用于微服务上下文

java - 使用 JDBC 获取 MySQL 查询的状态消息(包括执行时间)

c# - 在 C# 中锁定

c - linux中如何创建大量socket进行性能测试

ipython - spyder Ipython控制台缓冲区