dupliquer socket.getInputStream() ?
Bonsoir à tous,
prenons cet extrait de début de code :
Code:
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:
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:
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.