我正在编写一个简单的程序,使用java的javax.sound.sampled包记录和播放音频。如果代码行(TargetDataLine& SourceDataLine)是线程安全的话,我在java 8引用中找不到任何提及。在回放(使用SourceDataLine)时,这尤其是一个问题,因为写方法和耗尽方法都会阻塞,并且似乎不会响应线程中断。
我是否可以从另一个线程关闭一个Line实例,以使原始线程从阻塞排水或写入方法中释放出来?
发布于 2017-08-11 21:34:09
通常,我只能通过标记SourceDataLine所在的类来访问它。包装类被赋予一个称为“SDL”的公开的易失性布尔值,SDL所在的循环被一个while(running)条件包围。这种方法所产生的延迟将随着正在写入的缓冲区的大小而变化。
您可能需要添加其他标志。但无论如何,SDL周围的while循环似乎是解释这些标志并对其采取行动的合适点。
https://stackoverflow.com/questions/45613563
复制相似问题