2017-05-08 131 views
1

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

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

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

回答

3

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

+0

这正是我打算做的。我不想公开引用此单个ByteBuffer,我想将它的只读片返回给流。 –