Bonsoir à tous,

prenons cet extrait de début de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
final Socket socket = new Socket (hostName, port);
is = socket.getInputStream ();
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
4
5
6
final Scanner scan = new Scanner(is, "UTF-8");
 
				while (scan.hasNextLine()) {
...
 
}
chaque thread prend ce qu'il a besoin comme infos et effectue des actions en conséquence.

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 :

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);
					}
}
Dans ce code, il y a autant de listeners que de thread ce qui me permet d'imiter une duplication des flux.


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.