register 不允许 block 模式,而默认的是

Exception in thread "main" java.nio.channels.IllegalBlockingModeException
at java.nio.channels.spi.AbstractSelectableChannel.register(Unknown Source)
at com.nio.echo.IOHandler.<init>(NIOEchoServer.java:99)
at com.nio.echo.AcceptHandler.doHandle(NIOEchoServer.java:77)
at com.nio.echo.NIOEchoServer.startServer(NIOEchoServer.java:52)
at com.nio.echo.NIOEchoServer.main(NIOEchoServer.java:59)

 

 

serverSocketChannel.configureBlocking(false);
serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);

  

  



register 不允许 block 模式,而默认的是。 把它设置成false就可以了。

你应该仔细看看 register 的API说明。里面很清楚

     * @throws  IllegalBlockingModeException
     *          If this channel is in blocking mode

posted @ 2015-10-30 11:22  无心流泪  阅读(775)  评论(0编辑  收藏  举报