NIO是Java New IO的简称,在JDK1.4版本中引入该API,从那时起,就被广泛的应用。通过使用她,可以通过非阻塞的方式进行IO操作。
具体当你需要比较多的并发,而且并发的需要做长连接时,传统的连续池可能会满足不了你的需求,必竟如果连接池维护过多的连接 时,对于虚拟机的要求比较高,但如果过少连接的话,阻塞的线程会让程序处理的非常慢,这时,你就可以考虑一下使用NIO框架MINA。
服务端代码:
package cn.mina;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
/**
* @author html580
* @site http://www.html580.com
*/
public class MainServer {
// 设置端口
public static int PORT = 8991;
/**
* @param args
* @throws IOException
* @author html580
*/
public static void main(String<> args) throws IOException {
System.out.println("服务创建中");
// 创建一个非阻塞的的server端socket,用NIO
SocketAcceptor acceptor = new NioSocketAcceptor();
// 创建接收数据的过滤器
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
/*
* 这里注意点: 1:TextLineCodecFactory设置这个过滤器一行一行(/r/n)的读取数据
* 2.ObjectSerializationCodecFactory一般接收的是对象等形象,以对象形式读取
*/
// chain.addLast("chain", new ProtocolCodecFilter(new
// TextLineCodecFactory()));
chain.addLast