多次访问直接 ByteBuffer

Multiple access to direct ByteBuffer

我目前正在 java 中创建用于实时音频通信的应用程序。计划是处理多个(超过 100 个)同时连接。其中一项要求是,当我收到信号时,我必须播放舒适的噪音。我想知道的是,在当前的实现中,我为每个连接加载带有噪声的文件到内存,然后将其推送到 20ms 样本中输出。

我想知道我是否能够在内存中只加载一次。我的第一个猜测是创建 Enum Singleton 将文件加载到直接 ByteBuffer 中,然后不同的线程将访问它并获得不同的样本。

这种方法有什么缺点吗?我可以安全地使用多个只读 ByteBuffers 引用一开始创建的那个吗?它会在重负载应用程序中毫无问题地工作吗?

您将需要 slice() 缓冲区,以便每个线程获得不同的视图,每个线程都有自己的 positionlimit