二、Java NIO概览
2021-01-20 17:13
标签:不用 方法 转换 soc file inf 选择 href 比较 https://www.cnblogs.com/lay2017/p/12901123.html Java NIO包含了一下核心组件 1.channel:通道 2.buffer:缓冲区 3.selector:选择器 Java NIO软件包有很多类,但是最核心的就是这三种。所以本文重点关注着三个 比较典型的是,在NIO中,所有的IO操作的发生都从channel开始。你可以暂时把channel理解成BIO中的流。我们可以从channel中读取数据到buffer,也可以把buffer里的数据写入到channel当中,如图所示: 和流一样,channel会有多种实现,以下是几个比较核心的channel实现: 1.FileChannel 2.DatagramChannel 3.SocketChannel 4.ServerSocketChannel 我们可以看到,channel主要是包含了两大类:网络IO、文件IO。 那么再看看buffer的核心实现类: 1.ByteBuffer 2.CharBuffer 3.DoubleBuffer 4.FloatBuffer 5.IntBuffer 6.LongBuffer 7.ShortBuffer 我们看到,除了Bool类型的基础类型之外都有一个buffer的实现,也就是说你可以直接将这些基础类型的数据直接存储在buffer里面而不用转换。 除了以上的buffer之外,还有一个比较重要的buffer叫做MappedByteBuffer,是一个用于文件内存映射的buffer,将会在其它文章说明。 选择器允许一个单线程管理多个channel,也就是说你可以使用尽可能少的线程来处理尽可能多的IO操作,如图: 要使用selector,你需要将channel先注册到selector当中,然后调用selector的select方法。 select方法会使得线程阻塞,直到有channel出现变化的事件返回,该线程将会处理这个事件。(例如:连接打开事件、数据达到事件等) 二、Java NIO概览 标签:不用 方法 转换 soc file inf 选择 href 比较 原文地址:https://www.cnblogs.com/lay2017/p/12901363.html所有文章
正文
channel和buffer
Selector
上一篇:java排查故障
下一篇:Java基础08—数字类处理