2009-12-28 120 views
1

How can I play sound in Java?播放Wav声音中的资源泄漏示例代码

是否有可能泄露以下代码的资源?谁将负责关闭音频流?

public static void playAlertSound() { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       Clip clip = AudioSystem.getClip(); 
       AudioInputStream inputStream = AudioSystem.getAudioInputStream(Utils.class.getResourceAsStream("/sounds/door_bell.wav")); 
       clip.open(inputStream); 
       clip.start(); 
      } catch (Exception e) { 
       log.error(null, e); 
      } 
     } 
    }).start(); 
} 

回答

2

你需要明确关闭该行,如下所示:

clip.addLineListener(new LineListener() { 
    public void update(LineEvent event) { 
     if (event.getType() == LineEvent.Type.STOP) { 
      event.getLine().close(); 
     } 
    } 
}); 
+0

怎么样的AudioInputStream?我是否也需要处理它? – 2009-12-29 00:48:52