gpt4 book ai didi

java - 确定何时关闭 Java 中的声音播放线程

转载 作者:行者123 更新时间:2023-12-01 17:40:46 26 4
gpt4 key购买 nike

我正在 Java 中播放声音文件,并且正在寻找一种简单的方法来确定声音文件何时完成播放,以便我可以终止线程。有没有简单的方法可以实现这一点?

最佳答案

抱歉,这有点晚了,但我今天刚刚遇到一个问题,这个问题听起来很熟悉。在一些游戏代码中,我使用 javax.sound.sampled.Clip 来播放各种声音,我发现如果我在完成后没有显式调用 line.close() ,则探查器中的 native 线程数将会增加-rocket 直到出现 OutOfMemory 错误。

// this just opens a line to play the sample
Clip clip = AudioSystem.getClip();
clip.open( audioFormat, sounddata, 0, sounddata.length);
clip.start();

// at this point, there is a native thread created 'behind the scenes'
// unless I added this, it never goes away:
clip.addLineListener( new LineListener() {
public void update(LineEvent evt) {
if (evt.getType() == LineEvent.Type.STOP) {
evt.getLine().close();
}
}
});

我的假设是,剪辑创建了一个线程来将样本字节计量到行中,但线程在那之后会挂起,以防您想再次重新使用剪辑。我的第二个假设是,我的代码中的某个地方必须引用该剪辑,反之亦然,但无论如何,上面的代码片段用胶带粘住了问题。

希望这对某人有用。

关于java - 确定何时关闭 Java 中的声音播放线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837974/

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