SelectableChannel[] channels = handler.getChannels();
try {
for (int i = 0; i < channels.length; i++) {
SelectableChannel channel = channels[i];
channel.configureBlocking(false);
int validOps = channel.validOps();
// It's a bug of java nio, see:
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4960791
boolean isConnected = (validOps & SelectionKey.OP_CONNECT) != 0
&& ((SocketChannel) channel).isConnected();
channel.register(selector, isConnected ? SelectionKey.OP_READ