如何在Java中停止正在运行的音乐线程?

时间:2013-04-21 08:31:23

标签: java audio

我有一个课程,在游戏的无限循环中播放背景音乐。我希望它在另一个类调用BackgroundMusic对象上的stopPlaying()方法时停止。根据Oracle文档,没有办法在Java中停止线程。

它说使用它检查的变量,当变量是某个值时停止。当我调用stopPlaying()并尝试使while循环作为条件而不是true运行时,我尝试进行布尔运行设置为false,但是没有延迟就行不通。 (以前编辑的消息)

我会把我的课程放在这里,但这个网站一直说它没有正确格式化,我之前已经完成了这个(从Eclipse粘贴)。我把它放在PasteBin上:http://pastebin.com/edCH2DXE

1 个答案:

答案 0 :(得分:1)

这是一个很大的锤子,但你可以通过调用musicThread.interrupt()打断线程。这将导致isInterrupted()为音乐线程返回true。如果线程当时正在执行一些阻塞I / O,这可能会导致InterruptedException被抛出,所以你也需要捕获它:

  try {
    while (!Thread.currentThread().isInterrupted()) {
       // play music
    }
  } catch (InterruptedException ex) {
    // any cleanup necessary
  }

同样,这是一个很大的锤子,如果可以的话,最好使用布尔标志方法。