ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Java之IO--NIO详解与实战

Java之IO--NIO详解与实战 原文网址Java之IO--NIO详解与实战-CSDN博客简介本文介绍NIO及其实战。NIO概述BIO、NIO、AIO的区别见Java--BIO、NIO、AIO--区别/使用/实例-CSDN博客NIO支持两种模式1.同步阻塞 2.同步非阻塞。NIO详解ChannelChannel是双向的既可以用来进行读操作又可以用来进行写操作。NIO中的Channel的主要实现有FileChannel文件IODatagramChannelUDP)SocketChannelTCP客户端ServerSocketChannelTCP服务端BufferNIO中的关键Buffer有ByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, ShortBuffer分别对应基本数据类型: byte, char, double, float, int, long, short。NIO中还有MappedByteBuffer, HeapByteBuffer, DirectByteBuffer等这里先不进行陈述。SelectorSelector通过单线程处理多个Channel如果应用打开了多个通道但每个连接的流量都很低使用Selector就很合适例如聊天服务。Selector用法向Selector注册Channel然后调用它的select()方法这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回线程就可以处理这些事件例如有新连接、数据接收。一个多路复用器 Selector 可以同时轮询多个 Channel由于 JDK 使用了 epoll() 代替传统的 select 实现所以它并没有最大连接句柄 1024/2048 的限制。这也就意味着只需要一个线程负责 Selector 的轮询就可以接入成千上万的客户端。NIO实战⚠️注意使用 NIO 并不一定意味着高性能它的性能优势主要体现在高并发和高延迟的网络环境下。当连接数较少、并发程度较低或者网络传输速度较快时NIO 的性能并不一定优于传统的 BIO 。
返回列表