java selector

作者:原创时间:2022-04-19
文档

   

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

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java selenium java semaphore java separator java sequence java serializable java serializable接口 java serialversionuid java setlayout java platform java settimeout java plug-in java sftp java plugin java pojo java portal java sha256加密 java shuffle java simhash java simpledateformat java sizeof java script java sandbox java rxjava java runtime.exec java runnable java rtp java rsa私钥加密 java rsa公钥加密 java pipeline java ping java phoenix java paypal java path java rsa加密 java rotate java reverse java reverse() java retrofit java resume java resultset