2009-12-28 61 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