【发布时间】:2015-09-18 08:12:17
【问题描述】:
我有一个实现Runnable 的音频播放器。它开始一个声音,然后终止。这是一种常见的做法,还是我应该自己关闭它,就像在最后一种方法中一样,目前没有使用。在我看来,让它终止并自动强制关闭其余部分是个好主意。
public class AudioPlayer implements Runnable {
AudioInputStream audioIn;
Clip clip;
public AudioPlayer (String res) {
try {
URL url = this.getClass().getResource(res);
audioIn = AudioSystem.getAudioInputStream(url);
clip = AudioSystem.getClip();
clip.open(audioIn);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
clip.start();
}
public void close() throws IOException {
try {
clip.close();
audioIn.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
不要在不再需要资源时立即明确释放它们!
-
您是否打算在
AudioPlayer的单个实例上多次调用run()?如果没有,您可以/应该在run()方法中包含对close()的调用。 -
@GhostCat :P...
-
只是想知道:不接受的原因是什么?
-
@GhostCat 我看到你删除了所有的 cmets,所以我很好奇如果我删除接受你会怎么做,哈哈。对不起。没用的“社会实验”。 B-)