zoukankan      html  css  js  c++  java
  • 二、Java NIO概览

    所有文章

    https://www.cnblogs.com/lay2017/p/12901123.html

    正文

    Java NIO包含了一下核心组件

    1.channel:通道

    2.buffer:缓冲区

    3.selector:选择器

    Java NIO软件包有很多类,但是最核心的就是这三种。所以本文重点关注着三个

    channel和buffer

    比较典型的是,在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,将会在其它文章说明。

    Selector

    选择器允许一个单线程管理多个channel,也就是说你可以使用尽可能少的线程来处理尽可能多的IO操作,如图:

    要使用selector,你需要将channel先注册到selector当中,然后调用selector的select方法。

    select方法会使得线程阻塞,直到有channel出现变化的事件返回,该线程将会处理这个事件。(例如:连接打开事件、数据达到事件等)

  • 相关阅读:
    Javascript MVC学习杂记3
    Backbone.js 0.9.2 源码分析收藏
    Javascript MVC学习杂记2
    Javascript MVC学习杂记1
    C语言string.h中常用字符函数介绍
    10点网页设计要注意的细节
    js日期函数
    结合回调函数介绍下泛型函数
    【转载】互斥量和信号量的区别
    设计模式之Singleton
  • 原文地址:https://www.cnblogs.com/lay2017/p/12901363.html
Copyright © 2011-2022 走看看