Was passiert mit einem BufferedReader, der nicht innerhalb eines callable.call geschlossen wird?

Ich habe drei Fragen.

Um das zu erklären, habe ich den Code einer anderen Person überprüft und festgestelltBufferedReaders werden manchmal nicht geschlossen. Normalerweise gibt Eclipse eine Warnung aus, dass dies ein potenzieller Speicherverlust ist (und ich behebe ihn). Innerhalb einer Callable-Klasse gibt es jedoch keine Warnung.

class outerClass {
    ...
    public void someMethod() {
        Future<Integer> future = outputThreadPool.submit(new innerClass(this.myProcess.getInputStream(), threadName));
        ...
    }

    class innerClass implements Callable<Integer> {
        private final InputStream stream;
        private final String prepend;

        innerClass(InputStream stream, String prepend) {
            this.stream = stream;
            this.prepend = prepend;
        }

        @Override
        public Integer call() {
            BufferedReader stdOut = new BufferedReader(new InputStreamReader(stream));
            String output = null;
            try {
                while ((output = stdOut.readLine()) != null) {
                    log.info("[" + prepend + "] " + output);
                }

            } catch (IOException ignore) {
            // I have no idea why we're ignoring this... :-|        
            }
            return 0;   
        }
    }
}

Die Leute, die den Code geschrieben haben, sind erfahrene Java-Entwickler. Mein erster Gedanke ist also, dass dies beabsichtigt ist ... aber es könnte sein, dass sie es eilig hatten, als sie ihn geschrieben und einfach übersehen haben.

Meine Fragen sind:

Warum hebt Eclipse dies nicht hervor (was durch die Beantwortung der folgenden Fragen beantwortet werden kann)?

Was ist das Schlimmste, das passieren kann, wenn es innerhalb der call () -Methode geschlossen wird? (Ich kann mir keinen guten Grund vorstellen ... und ich habe eine Weile gesucht ... aber vielleicht war es beabsichtigt, den BufferedReader nicht zu schließen)

Was ist das Schlimmste, was passieren kann, wenn der BufferedReader istnicht innerhalb der inneren Klasse geschlossen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage