当前位置:科普知识站>IT科技>

java|selector

IT科技 阅读(1.35W)

<link rel="stylesheet" href="https://js.how234.com/c506fb5b83/dc0cf946804bdf97ca5e71130ef8026b0a/dc01ee5e8440/dc1dd45d9356.css" type="text/css" /><link rel="stylesheet" href="https://js.how234.com/c506fb5b83/dc0cf946804bdf97ca5e71130ef8026b0a/dc01ee5e8440/dc1dc35a845ed2bac8507c0f05e4.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><style>pre{overflow-x: auto}</style>

   <link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java selector是什么?让我们一起来了解一下吧!

java selector是一个抽象类。Selector的含义是选择器,它支持NIO的多路复用。selector要应用selector.open()方法来取得,不可以直接创造。

java selector

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(); } } } } }