首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JFugue中暂停音乐

在JFugue中暂停音乐
EN

Stack Overflow用户
提问于 2012-12-21 11:54:41
回答 1查看 900关注 0票数 0

我正在开发一个通过多线程在后台播放音乐的程序,因为否则GUI就会冻结。我对多线程(易失性、同步等)有一定的了解。但我想知道如何立即停止/暂停线程(即使进程正在处理)。我让音乐在背景中循环,但如果我将一个stop变量挂接到循环中,歌曲必须停止播放,音乐才会停止。所以我的问题仍然是,从父线程是否有任何方法可以在歌曲中间立即暂停或终止音乐,因为在它之后我有音频可以播放。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-21 12:20:14

首先,线程中的大多数循环应该类似于:

代码语言:javascript
复制
while(!isInterrupted()) {
    try {
       // do something (like play song)
    } catch (InterruptedException e) {
        interrupt();
    }
}

如果在循环中有阻塞调用(听起来像你的描述),它们可能会允许interrupt()。从线程外部调用interrupt()将中断阻塞调用,并将您转储到catch块中。这将清除" interrupt“标志,因此您需要再次调用interrupt来退出循环。

根据您播放音乐的方式:

  • 如果你正在使用一个有"pause“或"stop”方法的库来播放音乐,你可以直接使用它。看起来你正在使用jFugue -它的播放器有一个

()方法-你试过调用它吗?

  • 如果你在做其他事情,你需要跟踪歌曲的位置并在线程上调用interrupt()。如果要重新启动,则需要返回追踪位置

请注意,如果要使用上面的循环重新启动,则需要一个嵌套循环,如下所示:

代码语言:javascript
复制
while(true) {
    while(!isInterrupted()) {
        ...
    }
}

如果只有!isInterrupted()循环,线程将完成,并且无法重新启动。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13984039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档