简介

NIO与AIO的简单使用

基本概念

同步与异步

同步和异步是针对应用程序和内核的交互而言的;同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪;而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知

阻塞与非阻塞

阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式;阻塞方式下读取或者写入将一直等待;而非阻塞方式下,读取或者写入会立即返回一个状态值

BIO NIO AIO

BIO

  1. 简介:同步阻塞I/O,客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果连接不做任何处理就会造成不必要的线程开销,可以采用线程池进行优化
  2. 应用场景:连接数少且固定
  3. API:编程比较简单,JDK1.4之前的唯一选择

NIO

  1. 简介:同步非阻塞I/O,客户端发送的连接请求都会注册到Selector(多路复用器)上,Selector轮询到连接有I/O请求时才会启动一个线程进行处理
  2. 应用场景:连接数多且短(轻操作),如聊天服务器
  3. API:编程比较复杂,Since JDK1.4

AIO (NIO 2.0)

  1. 简介:异步非阻塞I/O,客户端的I/O请求都是由OS先完成再通知程序去启动线程进行处理
  2. 应用场景:连接数多且长(重操作),如图片服务器
  3. API:编程比较复杂,Since JDK1.7

BIO NIO AIO 简介的更多相关文章

  1. BIO,NIO,AIO总结

    熟练掌握 BIO,NIO,AIO 的基本概念以及一些常见问题是你准备面试的过程中不可或缺的一部分,另外这些知识点也是你学习 Netty 的基础. BIO,NIO,AIO 总结 1. BIO (Bloc ...

  2. 3. 彤哥说netty系列之Java BIO NIO AIO进化史

    你好,我是彤哥,本篇是netty系列的第三篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 上一章我们介绍了IO的五种模型,实际上Java只支持其中的三种,即BIO/NIO/ ...

  3. BIO,NIO,AIO 总结

    BIO,NIO,AIO 总结 Java 中的 BIO.NIO和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装.程序员在使用这些 API 的时候,不需要关心操作系统层面的知识,也不 ...

  4. (转)也谈BIO | NIO | AIO (Java版)

    原文地址: https://my.oschina.net/bluesky0leon/blog/132361 关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一 ...

  5. 拿搬东西来解释udp tcpip bio nio aio aio异步

     [群主]雷欧纳德简单理解 tcpip是有通信确认的面对面通信   有打招呼的过程  有建立通道的过程 有保持通道的确认    有具体传输udp是看到对面的人好像在对面等你 就往对面扔东西[群主]雷欧 ...

  6. 也谈BIO | NIO | AIO (Java版--转)

    关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BIO | NIO | AIO,本身的描述都是在Java语言的基础上的.而描述IO,我们需要从两个 ...

  7. IO回忆录之怎样过目不忘(BIO/NIO/AIO/Netty)

    有热心的网友加我微信,时不时问我一些技术的或者学习技术的问题.有时候我回微信的时候都是半夜了.但是我很乐意解答他们的问题.因为这些年轻人都是很有上进心的,所以在我心里他们就是很优秀的,我愿意多和努力的 ...

  8. Netty5序章之BIO NIO AIO演变

    Netty5序章之BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使 ...

  9. I/O模型系列之三:IO通信模型BIO NIO AIO

    一.传统的BIO 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请 ...

随机推荐

  1. spring-boot 实现文件上传下载

    @Controller public class FileUploadCtrl { @Value("${file.upload.dir}") private String path ...

  2. innosetup完整脚本

    #define MyAppName "Somarto"#define MyAppVersion "1.0.0"#define MyAppPublisher &q ...

  3. 用户从输入URL到看到网页发生了什么?

    一.在浏览器地址栏输入URL 二.浏览器查看缓存1.如果资源未缓存,发起新请求如果已缓存,检验是否处于有效期,资源处于有效期内直接提供给客户端,否则与服务器进行验证.2.检验有效期通常有两个HTTP头 ...

  4. Java多线程之ReadWriteLock读写锁简介与使用教程

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6558073.html  普通的锁在对某一内容加锁后,其他线程是不能访问的.但是我们要考虑这种情况:如果当前加锁 ...

  5. 使用Oracle Data Integrator Studio创建资料档案库

    一.Creating the Database Schema /*第1步:创建临时表空间 */ create temporary tablespace user_temp tempfile 'C:\a ...

  6. 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。

    一个封装的使用Apache HttpClient进行Http请求(GET.POST.PUT等)的类. import com.qunar.payment.gateway.front.channel.mp ...

  7. SpringBoot集成redisson分布式锁

    官方文档:https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 20180226更新:增加tryLock方法,建议后面去掉Distr ...

  8. Servlet学习(一)

    Servlet的运行过程 Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则直 ...

  9. MBTiles 1.2 规范翻译

    MBTiles 1.2 可以参考超图的文档MBTiles扩展 具体实现可以参考浅谈利用SQLite存储离散瓦片的思路和实现方法 mapbox提供了一个简单实现测试代码,github地址在这里https ...

  10. Generating phar.phar chmod: cannot access `ext/phar/phar.phar': No such file or directory make: [ext/phar/phar.phar] Error 1 (ignored)

    make install出现了cp: cannot stat `ext/phar/phar.phar': No such file or directory 于是我又: cd ext/phar/ls ...