如何在JLayer中使用一个线程时停止当前播放的歌曲?

我最近使用Jlayer在Java中播放mp3歌曲时使用了解决一线程问题的解决方案。但是Kaleb Brasee的这个解决方案没有暗示你如何阻止玩家,也就是说怎么可以调用player.close()? Kaleb的代码是:
Executor executor = Executors.newSingleThreadExecutor();  
executor.execute(new Runnable() { public void run() {  
 /* do something */  
} });
这是我在run()中输入的代码
if(player != null) player.close();  

try{  
player = new Player(new FileInputStream(musicD.getPath()));  
player.play();  
}catch(Exception e){} 
问题在于,这解决了在音乐播放时保持gui活跃的问题(在另一个线程中 - 我想要的),我无法开始播放另一首歌:-( 我能做什么?     
已邀请:
好吧,在调整代码后,我意识到替换当前线程可以解决问题;它允许你开始播放不同的歌曲,即使前一个还没有完成。 这是新代码:   执行人执行人; //一个班级成员 每次想要播放歌曲时都这样做只是替换现有歌曲的线程, 因此,无论对方的进度如何,您都可以播放另一首歌曲   executor = Executors.newSingleThreadExecutor();   executor.execute(new Runnable(){public void run(){   /* 做一点事 */   }};     
这与另一个问题非常相似,你可以一次只播放一个音频帧,并检查一个标志是否应该暂停,在你的情况下停止播放。 https://stackoverflow.com/a/16738486/2094045     

要回复问题请先登录注册