多次访问直接 ByteBuffer
Multiple access to direct ByteBuffer
我目前正在 java 中创建用于实时音频通信的应用程序。计划是处理多个(超过 100 个)同时连接。其中一项要求是,当我收到信号时,我必须播放舒适的噪音。我想知道的是,在当前的实现中,我为每个连接加载带有噪声的文件到内存,然后将其推送到 20ms 样本中输出。
我想知道我是否能够在内存中只加载一次。我的第一个猜测是创建 Enum Singleton
将文件加载到直接 ByteBuffer
中,然后不同的线程将访问它并获得不同的样本。
这种方法有什么缺点吗?我可以安全地使用多个只读 ByteBuffers
引用一开始创建的那个吗?它会在重负载应用程序中毫无问题地工作吗?
您将需要 slice()
缓冲区,以便每个线程获得不同的视图,每个线程都有自己的 position
和 limit
。
我目前正在 java 中创建用于实时音频通信的应用程序。计划是处理多个(超过 100 个)同时连接。其中一项要求是,当我收到信号时,我必须播放舒适的噪音。我想知道的是,在当前的实现中,我为每个连接加载带有噪声的文件到内存,然后将其推送到 20ms 样本中输出。
我想知道我是否能够在内存中只加载一次。我的第一个猜测是创建 Enum Singleton
将文件加载到直接 ByteBuffer
中,然后不同的线程将访问它并获得不同的样本。
这种方法有什么缺点吗?我可以安全地使用多个只读 ByteBuffers
引用一开始创建的那个吗?它会在重负载应用程序中毫无问题地工作吗?
您将需要 slice()
缓冲区,以便每个线程获得不同的视图,每个线程都有自己的 position
和 limit
。