java selector是什么?让我们一起来了解一下吧!
java selector是一个抽象类。Selector的含义是选择器,它支持NIO的多路复用。selector要应用selector.open()方法来取得,不可以直接创造。
Selector有以下几种选择键维护:
1.keys:保存了所有已经在册且没有取消的选择键,它属于Set类型。可以使用selector.keys()获取
3.canceledKeys:已取消键.已经被取消但还没有取消注册(deregister)的选择键。该合计不能被访问。
3.canceledKeys:已取消键.已经被取消但还没有取消注册(deregister)的选择键。该合计不能被访问。
实战演练,具体步骤如下:
package com.test.nio; import java.io.DataInputStream; import java.io.InputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.spi.SelectorProvider; import java.util.Iterator; import java.util.Set; public class TestSelector {undefined /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception {undefined // TODO Auto-generated method stub Selector selector=SelectorProvider.provider().openSelector(); ServerSocketChannel ssc= ServerSocketChannel.open(); ssc.configureBlocking(false); ssc.socket().bind(new InetSocketAddress("127.0.0.1",7979)); SelectionKey acceptKey=ssc.register(selector,SelectionKey.OP_ACCEPT); //System.out.println("通道就绪个数:"+selector.select()); int keysAdded=0; while((keysAdded=selector.select())>0) {undefined Set readyKeys=selector.selectedKeys(); Iterator i=readyKeys.iterator(); while(i.hasNext()) {undefined SelectionKey sk=(SelectionKey) i.next(); i.remove(); ServerSocketChannel nextReady= (ServerSocketChannel) sk.channel(); Socket s=nextReady.accept().socket(); InputStream din=s.getInputStream(); DataInputStream ds=new DataInputStream(din); String str=ds.readLine(); while(str!=null) {undefined System.out.println(str); str=ds.readLine(); } } } } }
以上就是小编今天的分享了,希望可以帮助到大家。