Au lieu d'utiliser un sélecteur de la manière habituelle, où pour chaque canal prêt un message peut être déterminé et envoyé, je voudrais choisir quelle connexion est actuellement prête et envoyer un message là-bas. Vraisemblablement, cela peut être fait en jetant tous les canaux dans un sélecteur pour les lire et les marquer prêts à être lus s'ils sortent, puis en faisant la même chose pour l'écriture, puis en choisissant parmi ceux que j'ai marqués prêts.Java nio, vérifiant si un canal est prêt pour la lecture, écrire
Est-ce une bonne idée, est-ce qu'il y a une meilleure façon de le faire, et que dois-je faire attention? Par exemple, les états Rox Tutorial"Si vous essayez de mélanger OP READ et OP WRITE, vous aurez rapidement des ennuis: l'implémentation de Windows est bloquée si vous le faites." Y a-t-il des pièges similaires ici? Quelle est la meilleure façon de mettre en œuvre:
boolean isReadyForRead(SocketChannel c);
boolean isReadyForWrite(SocketChannel c);
Y a-t-il des problèmes à le faire de cette façon, même si cela a été déplacé? (J'ai restauré la version originale de ma question.) –
Je ne suis pas familier avec le problème mentionné dans le tutoriel, mais nous ne le faisons pas. Nous ne mixons pas READ/WRITE. Le jeu de clés ne sera pas mis à jour pour chaque appel, donc pas de problème de threading. –