在java线程中停止播放器(JLayer)

在java线程中停止播放器(JLayer),java,multithreading,audio,media-player,Java,Multithreading,Audio,Media Player,我有一个线程来播放音频,但当我关闭窗体时,我想停止播放器播放音频文件,我的线程运行方法是: public static Player playplayer; public static FileInputStream fis; public static BufferedInputStream bis; public void run(){ while(!Thread.currentThread().isInterrupted()){ try{ Strin

我有一个线程来播放音频,但当我关闭窗体时,我想停止播放器播放音频文件,我的线程运行方法是:

public static Player playplayer;
public static FileInputStream fis;
public static BufferedInputStream bis;
public void run(){
   while(!Thread.currentThread().isInterrupted()){
       try{
          String file="E://Net Beans Work Space//The Imran's Regression"
            + "//src//imranregression//audio//iron man.mp3";
          fis= new FileInputStream(file);
          bis= new BufferedInputStream(fis);
          playplayer = new Player(bis);           
          playplayer.play();            
       }catch(Exception e){
             System.out.print("ERROR "+e);
       }
   } 
我阻止我的球员的方法是:

  private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
  try{
      BGMusic.fis.close();
      BGMusic.bis.close();
      BGMusic.playplayer.close();      //want to close my player here
      audioplay.interrupt();   //stopping my thread here

  }catch(Exception e){

      return;
  }
}    

问题是它没有像我想的那样停止我的线程,也没有停止播放音频。我怎样才能做到这一点?请先帮我谢谢

移动这三条线

 BGMusic.fis.close();
 BGMusic.bis.close();
 BGMusic.playplayer.close();      //want to close my player here
就在while关闭之后

 while(!Thread.currentThread().isInterrupted()){
    //stuff
 }
应该有用。就我而言,我更喜欢创建一个布尔值来检查线程是否应该退出,并使用
join()
等待线程完成。

将其设置为:

 Thread audioplay=null;
正常启动线程! 那么

您的线程类应具有以下特性: i、 e您应该使用易失性布尔变量签入while()


就是这样!你完全完了

这也是一个与Android相关的问题吗?顺便说一句,你为什么要删除你之前的问题?首先,这不是一个与android相关的问题。其次,最后一个问题被忽略了。问题是,我只是想知道关于我做错的事情的任何提示,以确保我做错了,加上我尝试了更多的代码,所以这次再次失败“最后一个问题被忽略了“1)这不是删除它的正当理由2)开始一个完全相同的新问题是没有意义的。3) 考虑到我花时间整理第一个,我很恼火。4) 最后一个问题对你来说可能并不重要,但因为我是为数不多的研究此类问题的人之一,我觉得你根本不可能得到答案。对不起,安德鲁先生,请给我一个机会,这种情况不会再次发生。请你必须使用布尔类型变量,以便在()是的,我忘了添加布尔变量,让我检查它是否工作!waityes对我来说很好问题是我没有做正确的代码再次感谢
    if (audioplay != null) {
        bg.Terminate();
        playplayer.close();
    try {
        audioplay.join();
    } catch (InterruptedException ex) {
        //catch the exception
    }
        System.out.print("The thread has stopped");
    }
    private volatile boolean running = true;

public void Terminate() {
    running = false;
}

public void run(){
   while(running){
       try{
    String file="E://Net Beans Work Space//The Imran's Regression"
            + "//src//imranregression//audio//iron man.mp3";
         fis= new FileInputStream(file);
         bis= new BufferedInputStream(fis);
        playplayer = new Player(bis);



            playplayer.play();


}catch(Exception e){
    System.out.print("ERROR "+e);
}

   }