gpt4 book ai didi

java - 安排固定费率拒绝工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:06 25 4
gpt4 key购买 nike

当我从 ThreadMain 类中删除 df.calculateFreq() 时,这段代码会产生连续的声音并起作用。当我把它放在控制台下面的 genTone() 方法中时,它只打印一次“测试”,然后在没有它的情况下停止,代码工作正常。它没有足够的时间来处理额外的数据吗?谢谢,代码没有错误。

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);
}

public class DetermineFreq{
MainActivity main;

float accelX;

public void DetermineFreq() {
main = new MainActivity();
}

public void calculateFreq() {
accelX = main.getAccelX();
System.out.println(accelX);
}
}

最佳答案

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();
}
}

关于java - 安排固定费率拒绝工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com