Bonjour,
J'essaye de faire communiquer deux thread à l'aide de pipe. L'un ecrit des données et l'autre les lit
Thread1 ( thread qui ecrit )
PipedOutputStream iPOS = new PipedOutputStream()
Création de Thread2 avec iPOS en apramètre du constructeur
ObjectOutputstream iOOS = new ObjectOutputstream(iPOS)
Thread2 ( thread qui lit )
PipedIntputStream iPIS = new PipedIntputStream (iPOS)
ObjectIntputstream iOIS = new ObjectIntputstream (iPIS)
Jusque là, tout ce passe bien.. les flux sont bien créé.
Je cherche à ce que le thread2 ait le comportement suivant :
il est à l'écoute du pipe et dès qu'il recoit un message, il effectue un traitement et il se remet à l'écoute d'un eventuel message ...et tant le thread ne recoit pas de message, il ne fait rien....
Je pensais que l'appel à iOIS.readObject() me permettrait de réaliser cette mise à l'écoute.
Le premier message recu et bien traité :
exemple de message :
SYS com traite :Message de :SYS versBA contenu :utils.Evenement@64c34e
Mais quand dans ma boucle, le thread se repositionne à l'écoute (donc en attente du message n°2), j'ai le message suivant
java.io.IOException: Write end dead
at java.io.PipedInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.peek(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.peek(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at communication.JFPSCommunicationManager.run(JFPSCommunicationManager.java:241)
Faut-il faire une action particuliere apres un readObject pour pouvoir se repositiooner à l'écoute.
J'ai consulté des docs mais je n'ai pas trouvé ma solution. Je vous remercie d'avance de votre aide.
Partager