Salut, j'ai un problème avec un thread bloqué sur un readLine() dans un
BufferedReader.
Aucune donnée n'arrive j'ai fais un readline, le thread est donc bloqué.
Maintenant j'aimerai que ce thread s'arrête. quelle est la solution pour
ca ? je ne peux pas fermer le reader car il est locké par l'appel a
readLine() ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Hervé AGNOUX
Kupee wrote:
Salut, j'ai un problème avec un thread bloqué sur un readLine() dans un BufferedReader. Aucune donnée n'arrive j'ai fais un readline, le thread est donc bloqué. Maintenant j'aimerai que ce thread s'arrête. quelle est la solution pour ca ? je ne peux pas fermer le reader car il est locké par l'appel a readLine() ...
Il faut avoir créé auparavant un autre thread, duquel tu fais le close de ton BufferedReader au moment qui te parait opportun. Le thread en lecture sortira alors de son attente par une IOException.
-- Hervé AGNOUX http://www.diaam-informatique.com
Kupee wrote:
Salut, j'ai un problème avec un thread bloqué sur un readLine() dans un
BufferedReader.
Aucune donnée n'arrive j'ai fais un readline, le thread est donc bloqué.
Maintenant j'aimerai que ce thread s'arrête. quelle est la solution pour
ca ? je ne peux pas fermer le reader car il est locké par l'appel a
readLine() ...
Il faut avoir créé auparavant un autre thread, duquel tu fais le close de
ton BufferedReader au moment qui te parait opportun. Le thread en lecture
sortira alors de son attente par une IOException.
Salut, j'ai un problème avec un thread bloqué sur un readLine() dans un BufferedReader. Aucune donnée n'arrive j'ai fais un readline, le thread est donc bloqué. Maintenant j'aimerai que ce thread s'arrête. quelle est la solution pour ca ? je ne peux pas fermer le reader car il est locké par l'appel a readLine() ...
Il faut avoir créé auparavant un autre thread, duquel tu fais le close de ton BufferedReader au moment qui te parait opportun. Le thread en lecture sortira alors de son attente par une IOException.
-- Hervé AGNOUX http://www.diaam-informatique.com
Kupee
Hervé AGNOUX wrote:
Salut, j'ai un problème avec un thread bloqué sur un readLine() dans un BufferedReader. Aucune donnée n'arrive j'ai fais un readline, le thread est donc bloqué. Maintenant j'aimerai que ce thread s'arrête. quelle est la solution pour ca ? je ne peux pas fermer le reader car il est locké par l'appel a readLine() ...
Il faut avoir créé auparavant un autre thread, duquel tu fais le close de ton BufferedReader au moment qui te parait opportun. Le thread en lecture sortira alors de son attente par une IOException.
Cela pourrait marcher encore que j'ai un petit doute : le readLine est synchronisé sur le lock du reader, mais lorsqu'il rempli son buffer peut etre qu'il fait un wait s'il n'y a rien a lire ... J'ai en fait oublié un point qui me parrait important : mon BufferedReader lis sur System.in, et j'ai bien l'impression qu'on peut pas le stopper celui là. Du moins j'ai essayé et ca ne ressort jamais du close() ...
Hervé AGNOUX wrote:
Salut, j'ai un problème avec un thread bloqué sur un readLine() dans un
BufferedReader.
Aucune donnée n'arrive j'ai fais un readline, le thread est donc bloqué.
Maintenant j'aimerai que ce thread s'arrête. quelle est la solution pour
ca ? je ne peux pas fermer le reader car il est locké par l'appel a
readLine() ...
Il faut avoir créé auparavant un autre thread, duquel tu fais le close de
ton BufferedReader au moment qui te parait opportun. Le thread en lecture
sortira alors de son attente par une IOException.
Cela pourrait marcher encore que j'ai un petit doute : le readLine est
synchronisé sur le lock du reader, mais lorsqu'il rempli son buffer peut
etre qu'il fait un wait s'il n'y a rien a lire ...
J'ai en fait oublié un point qui me parrait important : mon
BufferedReader lis sur System.in, et j'ai bien l'impression qu'on peut
pas le stopper celui là. Du moins j'ai essayé et ca ne ressort jamais du
close() ...
Salut, j'ai un problème avec un thread bloqué sur un readLine() dans un BufferedReader. Aucune donnée n'arrive j'ai fais un readline, le thread est donc bloqué. Maintenant j'aimerai que ce thread s'arrête. quelle est la solution pour ca ? je ne peux pas fermer le reader car il est locké par l'appel a readLine() ...
Il faut avoir créé auparavant un autre thread, duquel tu fais le close de ton BufferedReader au moment qui te parait opportun. Le thread en lecture sortira alors de son attente par une IOException.
Cela pourrait marcher encore que j'ai un petit doute : le readLine est synchronisé sur le lock du reader, mais lorsqu'il rempli son buffer peut etre qu'il fait un wait s'il n'y a rien a lire ... J'ai en fait oublié un point qui me parrait important : mon BufferedReader lis sur System.in, et j'ai bien l'impression qu'on peut pas le stopper celui là. Du moins j'ai essayé et ca ne ressort jamais du close() ...
Sébastien
Cela pourrait marcher encore que j'ai un petit doute : le readLine est synchronisé sur le lock du reader, mais lorsqu'il rempli son buffer peut etre qu'il fait un wait s'il n'y a rien a lire ... J'ai en fait oublié un point qui me parrait important : mon BufferedReader lis sur System.in, et j'ai bien l'impression qu'on peut pas le stopper celui là. Du moins j'ai essayé et ca ne ressort jamais du close() ...
c'est normal vu la synchronisation sur l'objet "lock".
Une idée comme ça : tu pourrais essayer d'encapsuler System.in par un InputStream maison qui, lui, pourrait être fermé: - sur le read, ton stream teste available() du System.in avant d'esayer de lire le moindre octet, histoire de ne pas se faire bloquer. Quand il n'y a rien, il attend en faisant des wait(<petite tempo>) et donc bloque le BufferedReader. - sur un close de ton stream : tu fais un notify et tu retournes -1 dans la méthode read => ton buffered reader s'arrête.
Sébastien
Cela pourrait marcher encore que j'ai un petit doute : le readLine est
synchronisé sur le lock du reader, mais lorsqu'il rempli son buffer peut
etre qu'il fait un wait s'il n'y a rien a lire ...
J'ai en fait oublié un point qui me parrait important : mon
BufferedReader lis sur System.in, et j'ai bien l'impression qu'on peut
pas le stopper celui là. Du moins j'ai essayé et ca ne ressort jamais du
close() ...
c'est normal vu la synchronisation sur l'objet "lock".
Une idée comme ça : tu pourrais essayer d'encapsuler System.in par un InputStream maison qui, lui,
pourrait être fermé:
- sur le read, ton stream teste available() du System.in avant d'esayer de lire le moindre octet,
histoire de ne pas se faire bloquer. Quand il n'y a rien, il attend en faisant des wait(<petite
tempo>) et donc bloque le BufferedReader.
- sur un close de ton stream : tu fais un notify et tu retournes -1 dans la méthode read => ton
buffered reader s'arrête.
Cela pourrait marcher encore que j'ai un petit doute : le readLine est synchronisé sur le lock du reader, mais lorsqu'il rempli son buffer peut etre qu'il fait un wait s'il n'y a rien a lire ... J'ai en fait oublié un point qui me parrait important : mon BufferedReader lis sur System.in, et j'ai bien l'impression qu'on peut pas le stopper celui là. Du moins j'ai essayé et ca ne ressort jamais du close() ...
c'est normal vu la synchronisation sur l'objet "lock".
Une idée comme ça : tu pourrais essayer d'encapsuler System.in par un InputStream maison qui, lui, pourrait être fermé: - sur le read, ton stream teste available() du System.in avant d'esayer de lire le moindre octet, histoire de ne pas se faire bloquer. Quand il n'y a rien, il attend en faisant des wait(<petite tempo>) et donc bloque le BufferedReader. - sur un close de ton stream : tu fais un notify et tu retournes -1 dans la méthode read => ton buffered reader s'arrête.