2011-01-10 73 views
0

我最近使用一种解决方案来解决使用Jlayer播放Java歌曲时的单线程问题。但是Kaleb Brasee的这个解决方案并没有提示你如何阻止玩家,也就是说怎么才能调用player.close()?如何停止当前播放歌曲与JLayer一起使用一个线程?

卡莱布的代码是:

Executor executor = Executors.newSingleThreadExecutor(); 
executor.execute(new Runnable() { public void run() { 
/* do something */ 
} }); 

,这是我把运行代码()

if(player != null) player.close(); 

try{ 
player = new Player(new FileInputStream(musicD.getPath())); 
player.play(); 
}catch(Exception e){} 

的问题是,竟有这样的解决保持GUI积极而问题音乐播放(只有另一个线索 - 我想要的),我无法开始播放另一首歌曲:-(

我该怎么办?

回答

0

那么,在调整代码之后,我意识到替换当前线程可以解决问题;它允许你开始播放不同的歌曲,即使前一个还没有完成。

这是新的代码:

执行人执行人; //类成员

这样做,你要播放一首歌曲,每次简单地替换现有歌曲的主题,
从而使您能够在另一首歌曲无论其他

进度executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable(){public void run(){
/* do something */
}});

相关问题