Est-il possible d’écrire un thread sur le OutputStream
d’un Java Socket
, pendant qu’un autre lit le InputStream
du socket, sans que les threads aient à se synchroniser sur le prise?
Réponses
Trop de publicités?Assurez-vous. La situation que vous décrivez ne devrait pas être un problème (de la lecture et de l'écriture en même temps).
Généralement, le thread de lecture se bloque si il n'y a rien à lire, et peut-délai de l'opération de lecture si vous avez un délai spécifié.
Depuis le flux d'entrée et les flux de sortie sont des objets distincts à l'intérieur de la Douille, la seule chose que vous risquez de vous en préoccuper, ce qui arrive si vous avez eu 2 fils en essayant de lire ou d'écrire (deux fils, même d'entrée/sortie de courant) en même temps? La lecture/écriture des méthodes de l'InputStream/OutputStream classes ne sont pas synchronisés. Il est possible, cependant, que si vous êtes en utilisant une sous-classe de InputStream/OutputStream, que la lecture/écriture de méthodes que vous appelez sont synchronisés. Vous pouvez consulter la javadoc pour quelle que soit la classe, les méthodes que vous l'appelez, et de trouver que assez rapide.
Dans des moments comme cela, je trouve qu'il vaut mieux aller regarder le code source:
À partir du code, vous pouvez voir comme mentionné par d'autres, un InputStream et OutputStream sont créés ceux qui maintiennent leur propre état, de sorte que vous devez être à l'aise aussi bien en lecture/écriture avec deux threads.
Cependant, comme mentionné précédemment, vous pouvez clairement dire sa une mauvaise idée d'avoir deux threads de lecture à partir de la même flux d'entrée (eof n'est pas synchronisé).
Par @SoftwareMonkey présumées de suggestion, il peut être préférable de poster cette question à un officiel de Java (Oracle) forum à ce que l' corriger contrat.