NIO即同步非阻塞式IO,是jdk4.0之后推出的技术。它和传统的BIO比较最大的区别在于在执行accept、connect、read、write操作时是非阻塞的。很有利于实现用少量线程来处理多个客户端请求,由于以上四种操作都是非阻塞的 可以随时让线程切换所处理的客户端 从而可以实现高并发服务器的开发。
下面是一个利用Selector+channel+Buffer实现 少量线程处理多个客户端请求小案例
//客户端代码
package cn.zl.nio;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
import java.util.Set;
public class client {
public static void main(String[] args) throws Exception {
//0.创建选择器
Selector selc = Selector.open();
//1.创建客户端
SocketChannel sc = SocketChannel.open();
//2.设置非阻塞模式
sc.configureBlocking(false);
//3.连接服务器
sc.connect(new InetSocketAddress("127.0.0.1",44444));
//4.连接服务器
sc.register(selc, SelectionKey.OP_CONNECT);
while(true){
//5.在注册集合中查询有没有已经就绪的键(大喊一声,谁准备好了),如果没有任何就绪,则阻塞,直到有通道就绪为止,返回就绪的通