我正在做一個Java的DAW,實際上它比它更基本,我用我曾經擁有的舊Tascam 4軌錄音機來模擬它。我試圖在錄音時監視音頻,儘可能減少兩者之間的延遲(延遲)。如果我在同一個線程中寫入音頻字節,我正在讀取它們的延遲時間很長(如果您想查看我擁有的代碼,我會發布它,但由於我認爲它需要重寫,因此似乎無關緊要) 。我一直在想的是使用生產者,消費者線程和隊列來在其間存儲字節塊。所以我的生產者線程將從TargetDataLine
中讀取字節並將它們存儲在隊列中,可能使用返回讀取的字節數的方法,以便在while循環中檢查EOF。並創建一個併發線程,它將隊列中存儲的字節塊(當它們是要寫入的字節時)並將它們寫入SourceDataLine
。我的想法是同時運行的兩個線程幾乎可以在讀取字節的同時寫入字節,或者至少比現在更好,但我想知道其他人如何解決這個問題。java生產者消費者線程監控音頻
此外,我需要確保我的使用者線程等待隊列中是否有字節,並在添加字節時再通知再次開始寫入字節,如果有人會發布正確方法的示例來同步兩個線程,我將不勝感激。我知道他們必須在同步代碼塊中,我應該使用多個鎖嗎?我不是要求一個特定於音頻的例子,而只是一個通用的例子,它增加了一些東西,然後刪除它,任何幫助表示讚賞。謝謝。
我喜歡干擾鏈接 – 2013-04-11 05:33:18