我有一个程序创建一个线程,该线程以 48 KHz 从声卡捕获数据并将其写入缓冲区以进行收集。核心线程代码如下..
public void run() {
// Run continously
for (;;) {
// get data from the audio device.
getSample();
}
}
// Read in 2 bytes from the audio source combine them together into a single integer
// then write that into the sound buffer
private void getSample () {
int sample,count,total=0,fsample;
byte buffer[]=new byte[2];
try {
while (total<1) {
count=Line.read(buffer,0,2);
total=total+count;
}
} catch (Exception e) {
String err=e.getMessage();
}
sample=(buffer[0]<<8)+buffer[1];
etc etc etc
}
该程序可以正常工作,只是该进程似乎占用了 100% 的 CPU 时间。我认为这是因为线程正在等待数据到达 Line.Read 行。我尝试在线程的各个点插入 Thread.yield() ,但似乎没有什么区别。
谁能建议我可以减少该线程占用的 CPU 时间的方法?
谢谢你的时间
伊恩