Jak poprawnie zamknąć Scanner działający w odrębnym wątku?

Odpowiedz Nowy wątek
2019-03-02 09:58

Rejestracja: 2 lata temu

Ostatnio: 2 tygodnie temu

0

Witam

Odrębny wątek zajmuje się odczytywaniem danych z wejścia standardowego. Załóżmy że wątek główny działa w pętli nieskończonej i korzysta z danych zwróconych przez wątek odczytujący. Ale co w sytuacji gdy zatrzymam program zamykając okno aplikacji, jak poprawnie zamknąć zasób Scannera?

 class SourceOfCMD implements Callable<String> {
        private Scanner scanner;
        public SourceOfCMD() {
            scanner = new Scanner(System.in);
        }
        @Override public String call() {
            try {
                System.out.println("Wprowadz komende:");
                String s = scanner.nextLine();
                return s;
            }
            catch(NoSuchElementException e) {
                System.out.println(e);
                System.exit(-1);
            }
            finally {

            }
            return null;
        }
    }

public class Main {
  public static void main(String[] args) throws Exception {
        while(true) {
           ...
        }
  }
}

Pozostało 580 znaków

2019-03-02 12:42

Rejestracja: 1 rok temu

Ostatnio: 1 tydzień temu

0

Poczytaj o try with resources

try (Scanner scanner = new Scanner(new File("test.txt"))) {
    while (scanner.hasNext()) {
        System.out.println(scanner.nextLine());
    }
} catch (FileNotFoundException fnfe) {
    fnfe.printStackTrace();
}

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0