第一章Netty,Selector处理可写事件
在 Java NIO 中,处理 Selector 的可写事件(OP_WRITE)是高性能网络编程中的难点。与读事件不同,写事件如果处理不当,极易导致 CPU 100% 空转。
前面我们看到了,while循环,cpu空转,我们这里优化了下代码,
看案例效果:
publicstaticvoidmain(String[]args)throwsIOException{// 处理可写事件ServerSocketChannelssc=ServerSocketChannel.open();ssc.configureBlocking(false);Selectorselector=Selector.open();ssc.register(selector,SelectionKey.OP_ACCEPT);ssc.bind(newInetSocketAddress(8080));while(true){selector.select();Iterator<SelectionKey>iterator=selector.selectedKeys().iterator();while(iterator.hasNext()){SelectionKeykey=iterator.next();iterator.remove();if(key.isAcceptable()){SocketChannelsc=ssc.accept();sc.configureBlocking(false);SelectionKeyscKey=sc.register(selector,0,null);scKey.interestOps(SelectionKey.OP_READ)