Зачем в Java NIO регистрировать интересные типы событий с помощью Selector?JAVA

Программисты JAVA общаются здесь
Anonymous
Зачем в Java NIO регистрировать интересные типы событий с помощью Selector?

Сообщение Anonymous »


Почему Java NIO регистрирует интересующие типы событий с помощью селектора вместо прямой регистрации интересующего SocketChannel/ServerSocketChannel?

1. Во многих примерах NIO, которые я вижу сейчас, ServerSocketChannel интересуется только событиями Accept, а SocketChannel интересуется только событиями чтения и записи. Кажется, что код всегда пишется таким образом, так зачем нам указывать параметр типа события при регистрации SocketChannel в Selector?

2.Бывают ли ситуации, когда SocketChannel интересуется только одним типом событий чтения/записи или ни одним из них?

3.Что произойдет, если продолжать отправлять данные в SocketChannel, который не зарегистрировал событие OP_READ? Результат моего теста: цикл отправки данных может продолжаться вечно. Отбрасываются ли данные непосредственно на отправительной стороне?

Где я могу получить советы по этим трем вопросам? Спасибо!!!

Вернуться в «JAVA»