2017-05-08 3 views
1

Ich erstelle derzeit Anwendung in Java für Echtzeit-Audio-Kommunikation. Plan ist es, mehrere (über 100) simultane Verbindungen zu verwalten. Eine der Anforderungen ist, dass ich Komfortgeräusche streamen muss, wenn ich Signale bekomme. Was ich mich wundere ist, dass ich in der aktuellen Implementierung für jede Verbindung lade ich Datei mit Rauschen in den Speicher und dann dränge ich es in 20ms Proben auszugeben.Mutliple Zugriff auf direkte ByteBuffer

Ich frage mich, ob ich es nur einmal im Speicher laden kann. Meine erste Schätzung ist Enum Singleton erstellen, die Datei in direkte ByteBuffer laden und dann verschiedene Threads zugreifen würde und erhalten verschiedene Proben.

Gibt es irgendwelche Nachteile dieses Ansatzes? Kann ich mehrere read only ByteBuffers referenzieren, die auf die beim Start erstellte verweist? Wird es in schwer beladenen Anwendungen problemlos funktionieren?

Antwort

3

Sie müssen slice() den Puffer, so dass Sie verschiedene Ansichten davon pro Thread bekommen, jeder mit seinen eigenen position und limit.

+0

Das ist genau das, was ich vorhabe. Ich möchte keinen Hinweis auf diesen einzelnen ByteBuffer geben, ich möchte nur lesbare Slices davon an den Stream zurückgeben. –