zoukankan      html  css  js  c++  java
  • 这是我见过BIO/NIO/AIO讲的最清楚的博客了

    链接跳转

    最后,再举几个不是很恰当的例子来说明这四个IO Model:
    有A,B,C,D四个人在钓鱼:

    对应BIO,NIO,IO多路复用(select,epoll),AIO

    A用的是最老式的鱼竿,所以呢,得一直守着,等到鱼上钩了再拉杆;
    B的鱼竿有个功能,能够显示是否有鱼上钩,所以呢,B就和旁边的MM聊天,隔会再看看有没有鱼上钩,有的话就迅速拉杆;
    C用的鱼竿和B差不多,但他想了一个好办法,就是同时放好几根鱼竿,然后守在旁边,一旦有显示说鱼上钩了,它就将对应的鱼竿拉起来;
    D是个有钱人,干脆雇了一个人帮他钓鱼,一旦那个人把鱼钓上来了,就给D发个短信。

     

    package com.nxj.other;
    
    import java.nio.ByteBuffer;
    import java.util.Scanner;
    
    /**
     * @author ningxinjie
     * @date 2021/1/3
     * NIO使得用户程序可以直接使用直接内存,用于数据缓冲区,这样一来,对于文件频繁读写
     * 效率显然会提升,因为不需要内核态与用户态来回切换,来回拷贝了
     */
    public class NIOBufferTest {
        private static final int BUFFER = Integer.MAX_VALUE ;
        public static void main(String[] args) {
            ByteBuffer byteBuffer = ByteBuffer.allocateDirect(BUFFER);
            System.out.println("直接内存分配完毕");
            Scanner scanner = new Scanner(System.in);
            scanner.next();
            System.out.println("直接内存开始释放");
            byteBuffer = null;
            System.gc();
        }
    }
  • 相关阅读:
    MyEclipse里运行时报错
    Django中Template does not exit
    Django简单界面开发
    Django安装过程
    搭建NFS服务器和客户端过程中遇到的问题
    URL传值中文乱码的解决
    结合《需求征集系统》谈MVC框架
    对于微信小程序登录的理解图
    FpSpread基本句法
    sql,lambda,linq语句
  • 原文地址:https://www.cnblogs.com/ningxinjie/p/14206602.html
Copyright © 2011-2022 走看看