Comment arrêter un thread en attente dans un blocage de l'opération de lecture en Java?

J'ai un thread qui exécute le code suivant:

public void run() {
    try {
        int n = 0;
        byte[] buffer = new byte[4096];
        while ((n = in.read(buffer)) != -1) {
            out.write(buffer, 0, n);
            out.flush();
        }
    } catch (IOException e) {
        System.out.println(e);
    }
}

in est System.in. Comment puis-je arrêter un tel thread gracieusement? Ni la fermeture de System.in, ni l'utilisation de Thread.interrupt semble fonctionner.

  • ce qui se passe lorsque vous utilisez l'interrompre?
  • Fil continue de fonctionner jusqu'à ce que Ctrl-D (EOF) est entré manuellement.
InformationsquelleAutor vitaut | 2010-11-15