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();
}
}
}
}
}以上就是小编今天的分享了,希望可以帮助到大家。