我正在做一个Java的DAW,实际上它比它更基本,我用我曾经拥有的旧Tascam 4轨录音机来模拟它。我试图在录音时监视音频,尽可能减少两者之间的延迟(延迟)。如果我在同一个线程中写入音频字节,我正在读取它们的延迟时间很长(如果您想查看我拥有的代码,我会发布它,但由于我认为它需要重写,因此似乎无关紧要) 。我一直在想的是使用生产者,消费者线程和队列来在其间存储字节块。所以我的生产者线程将从TargetDataLine
中读取字节并将它们存储在队列中,可能使用返回读取的字节数的方法,以便在while循环中检查EOF。并创建一个并发线程,它将队列中存储的字节块(当它们是要写入的字节时)并将它们写入SourceDataLine
。我的想法是同时运行的两个线程几乎可以在读取字节的同时写入字节,或者至少比现在更好,但我想知道其他人如何解决这个问题。java生产者消费者线程监控音频
此外,我需要确保我的使用者线程等待队列中是否有字节,并在添加字节时再通知再次开始写入字节,如果有人会发布正确方法的示例来同步两个线程,我将不胜感激。我知道他们必须在同步代码块中,我应该使用多个锁吗?我不是要求一个特定于音频的例子,而只是一个通用的例子,它增加了一些东西,然后删除它,任何帮助表示赞赏。谢谢。
我喜欢干扰链接 – 2013-04-11 05:33:18