We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Java的IO流,根据类型不同划分为(具体继承这些IO类的子类非常多)
Java传统的IO类操作都是阻塞的,在高并发的场景下性能令人堪忧。
Java NIO(Non-blocking IO)是JDK1.4之后推出的一套新IO接口——非阻塞IO,与传统IO接口的主要区别在于:
1). Channel,相对于Stream,有几点区别:
2). NIO数据的流向总是:
Channel ----> Buffer Channel <---- Buffer
3). Channel主要有下面几种类型:
4). 具体获取Channel的类
Buffer实际上就是一块内存区,用于和Channel交互,需要注意的是:
Buffer是非线程安全的,如果需要在多线程环境中使用,则需要有同步锁。
1). Buffer基本概念
要真正理解Buffer,有一张图比较经典:
通常,0 <= mark <= position <= limit <= capacity
2). Buffer类型
3). Buffer常用操作
Buffer常用操作模式:
Selector是NIO中的组件,检查一个或多个channel,实现一个线程管理多个网络链接。
使用步骤:
Channel必须是非阻塞的。所以FileChannel不适用Selector,因为FileChannel不能切换为非阻塞模式。Socket channel可以正常使用。
深入分析 Java I/O 的工作机制
Java NIO 简明教程
攻破JAVA NIO技术壁垒
高性能Server--Reactor模型
Java NIO浅析
johnnian/Blog#36
The text was updated successfully, but these errors were encountered:
No branches or pull requests
一、I/O & NIO
Java的IO流,根据类型不同划分为(具体继承这些IO类的子类非常多)
Java传统的IO类操作都是阻塞的,在高并发的场景下性能令人堪忧。
Java NIO(Non-blocking IO)是JDK1.4之后推出的一套新IO接口——非阻塞IO,与传统IO接口的主要区别在于:
二、NIO基本概念
2.1 Channel
1). Channel,相对于Stream,有几点区别:
2). NIO数据的流向总是:
Channel ----> Buffer
Channel <---- Buffer
3). Channel主要有下面几种类型:
4). 具体获取Channel的类
2.2 Buffer
Buffer实际上就是一块内存区,用于和Channel交互,需要注意的是:
Buffer是非线程安全的,如果需要在多线程环境中使用,则需要有同步锁。
1). Buffer基本概念
要真正理解Buffer,有一张图比较经典:
通常,0 <= mark <= position <= limit <= capacity
2). Buffer类型
3). Buffer常用操作
Buffer常用操作模式:
2.3 Selector
Selector是NIO中的组件,检查一个或多个channel,实现一个线程管理多个网络链接。
使用步骤:
Channel必须是非阻塞的。所以FileChannel不适用Selector,因为FileChannel不能切换为非阻塞模式。Socket channel可以正常使用。
参考链接
深入分析 Java I/O 的工作机制
Java NIO 简明教程
攻破JAVA NIO技术壁垒
高性能Server--Reactor模型
Java NIO浅析
johnnian/Blog#36
The text was updated successfully, but these errors were encountered: