我有一个实现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/

10-11 00:28