準備ができているチャネルごとにメッセージを決定して送信できる通常の方法でセレクターを使用する代わりに、現在準備ができている接続を選択してそこにメッセージを送信したいと思います。
おそらくこれは、すべてのチャネルを読み取り用のセレクターに投入し、それらが出てきたら読み取りの準備ができているとマークし、次に書き込み用に同じことを行い、準備ができているとマークしたものの中から選択することで実行できます。
これは良い考えですか、これを行うためのより良い方法はありますか、何に注意する必要がありますか? たとえば、Rox チュートリアルには、 「OP READ と OP WRITE を混在させようとすると、すぐに問題が発生します。これを行うと、Sun Windows の実装がデッドロックすることが確認されています。」と記載されています。ここに同様の落とし穴はありますか?実装する最良の方法は何ですか:
boolean isReadyForRead(SocketChannel c);
boolean isReadyForWrite(SocketChannel c);