我有一个实现Runnable
的Audioplayer。它开始发出声音,然后终止。这是一种常见的做法吗?还是我以后应该自己关闭它,就像在上一种方法中那样,目前还没有使用。在我看来,最好是使其终止并自动强制关闭其余部分。
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();
}
}
}
最佳答案
要直接回答您的问题:不,那不是普遍的做法,而是不好的做法!
通常,获取资源而不明确释放资源是一种不好的做法。特别是对于流-在其后可能有文件句柄,各种东西。只打开它们并扔掉它们可能会起作用。但正如所说:不好的做法。请注意:对于打算长时间运行的任何程序……释放资源不仅“好”,而且绝对必须这样做。
特别是当人们认为Java 7是几年前引入的try-with-resources时。
关于java - 通过终止程序关闭Stream-常见做法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32647016/