Java 计划固定费率拒绝工作
当我从ThreadMain类中删除df.calculateFreq()时,该代码会产生连续的声音并起作用。当我把它放在下面的genTone()方法中时,控制台只打印一次“test”,然后在没有它的情况下停止,代码工作正常。它是否没有足够的时间来处理额外的数据??谢谢,代码中没有错误Java 计划固定费率拒绝工作,java,executorservice,Java,Executorservice,当我从ThreadMain类中删除df.calculateFreq()时,该代码会产生连续的声音并起作用。当我把它放在下面的genTone()方法中时,控制台只打印一次“test”,然后在没有它的情况下停止,代码工作正常。它是否没有足够的时间来处理额外的数据??谢谢,代码中没有错误 public ThreadMain() { audio = new AudioGenerator(10000); audio.createPlayer(); dF =
public ThreadMain() {
audio = new AudioGenerator(10000);
audio.createPlayer();
dF = new DetermineFreq();
exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//RUN FUNC every 20 millisecond
genTone();
}
}, 0, 50, TimeUnit.MILLISECONDS);
}
public void genTone(){
System.out.println("test");
dF.calculateFreq(); <--- this
tone = audio.getSineWave(noteDuration, 10000, 200);
audio.writeSound(tone);
}
ScheduledExecutor可能正在无声地抛出错误,并终止线程-这种情况确实会发生 将genTone()方法的内容包装在try-catch中,并打印捕获的任何异常的堆栈跟踪
public void genTone(){
try
{
System.out.println("test");
dF.calculateFreq();
tone = audio.getSineWave(noteDuration, 10000, 200);
audio.writeSound(tone);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void genTone(){
try
{
System.out.println("test");
dF.calculateFreq();
tone = audio.getSineWave(noteDuration, 10000, 200);
audio.writeSound(tone);
}
catch (Exception e)
{
e.printStackTrace();
}
}