Bonsoir à tous,
prenons cet extrait de début de code :
j'ai besoin qu'au moins deux threads traitent les infos du flux "is" genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 final Socket socket = new Socket (hostName, port); is = socket.getInputStream ();
chaque thread prend ce qu'il a besoin comme infos et effectue des actions en conséquence.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 final Scanner scan = new Scanner(is, "UTF-8"); while (scan.hasNextLine()) { ... }
Problème ; lorsque l'un thread lit une ligne d'is en quelque sortes il l'enlève à l'autre thread qui lit la suivante et qui a à son tour l'enlève à l'autre.
Or j'aimerai que tous les threads aient à disposition toutes les infos d ' "is".
Donc est-il possible de dupliquer le flux "is" afin que chaque thread possède le même flux ...
Pour le moment j'ai du me faire un distributeur du flux avec des pools :
Dans ce code, il y a autant de listeners que de thread ce qui me permet d'imiter une duplication des flux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while (scan.hasNextLine()) { final String line = scan.nextLine(); for (int i = 0; i < listeners.size(); i++) { listeners.get(i).queue.add(line); } }
Mais est-ce une méthode normale je vois que Java ne propose rien quand à une duplication du flux d'entrée ou j'ai mal regardé ?
Merci.
Partager