IO(一):传统IO(基于字符,字节,Socket) 与BIO,NIO,AIO 介绍

声明:本文很多都是网上文章东拼西凑来的,目的是希望能从大体上了解整个 IO,便于自己理解。


一. Java IO 框架介绍
二. 传统 IO 介绍
        2.1 基于字节操作 IO(InputStream,OutputStream)
        2.2 基于字符操作 IO (Reader,Writer)
        2.3 传统 IO 中的 Socket网络通信
三. BIO,NIO,AIO 简介
四.参考,PS,欠缺


一. Java IO 框架介绍
         如下图:

         在作者的理解中,Java IO 框架首先会分为两个大类,一个是 Java 传统的 IO,另外一个就是涉及到网络通信的 IO。在不涉及到网络通信的 IO 中,即使用我们传统的 IO,分为:
  • 基于字节操作的 IO:InputStream,OutputStream 类。
  • 基于字符操作的 IO:Reader,Writer类。
  • 基于磁盘操作的 IO:File类。
  • 基于网络通信的 IO:Socket等类。
那么在涉及到网络通信的 IO这一块,又有  BIO,NIO,AIO,概念如下:
  1. BIO:同步阻塞。服务器实现模式为 一个连接一个线程,也就是当客户端有请求连接的时候就需要启动一个线程进行处理,如果这个连接不做任何事情,会造成不必要的线程开销,当然可以通过线程池机制来改善。
  2. NIO:同步非阻塞。服务器实现模式为一个请求一个线程,客户端发送的连接请求都会注册到多路复用器上,多路复用器会轮询到连接有 I/O 请求时才启动一个线程进行处理。
  3. AIO:异步非阻塞。服务器实现模式为一个有效请求一个线程,客户端的 I/O 请求都是由 OS(操作系统) 先完成了再通知服务器应用去启动相应的线程进行处理。
适用场景介绍:
  • BIO适用于连接数目比较小,而且固定的架构中,对服务器资源要求会比较高。
  • NIO适用于连接数比较多而且比较短的架构中,比如说聊天服务器,编程有点复杂。
  • AIO适用于连接数目比较多,而且连接比较长的架构中,比如相册服务器,充分调用OS(操作系统)参与并发操作,编程比较复杂,JDK7以上支持。

二. 传统 IO 介绍
2.1 基于字节操作 IO(InputStream,OutputStream)
         java 的 io 是 装饰者模式的典型例子。首先认识这两个模式:

装饰者模式:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值