简述
- 同步阻塞IO库:传统的java.io包下面一些熟知的IO功能,比如File抽象,输入输出流等,交互方式是 同步阻塞 。java.net下面提供的部分网络API,比如Socket、ServerSocket、HttpURLConnection;
- 1.4引入的NIO,提供了Channel、Selector、Buffer等新的抽象,可以用于构建多路复用的、 同步非阻塞IO ,同时提供了更接近OS底层的高性能数据操作方式;
- java7引入的 异步非阻塞 AIO,基于事件和回调机制。
知识点扩展
相关知识
- 同步和异步:同步需要等待当前调用返回,异步是通过事件、回调等机制来实现消息获取;
- 阻塞和非阻塞:阻塞时当前线程处于阻塞状态,非阻塞是不管IO操作是否结束都直接返回,相应操作在后台继续处理。
NIO概览
NIO组成部分:
- Buffer,高效的数据容器
- Channel,类似于OS的fd,用来支持批量式IO操作的一种抽象;File或Socket通常是高层次抽象,Channel更接近于OS底层的抽象,例如用DMA获得特定场景的性能优化。
- Selector,NIO实现多路复用的基础,可以检测到注册在S