![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
非阻塞NIO
文章平均质量分 58
lolxxs
这个作者很懒,什么都没留下…
展开
-
Java SelectionKey虚拟类
文章目录总结SelectionKey虚拟类方法选择器、通道、键操作获取和设置兴趣集检测就绪操作添加和获取附件兴趣集(操作集)总结SelectionKey虚拟类表示通道SelectableChannel与选择器Selector注册的标记每次向选择器注册通道时,都会创建一个选择键SelectionKey,在通过调用其cancel方法取消键、 关闭其通道或关闭其选择器之前,键一直有效。cancel方法取消键不会立即将其从选择器中移除,而是将其添加到选择器的取消键集合中, 以便在下一次选择操作中删除,可以通原创 2021-12-19 19:54:12 · 553 阅读 · 0 评论 -
Java NIO类图总结
类图类名作用AutoCloseable接口该接口只有一个close()方法,实现该接口的对象在退出try-with resources块时会自动调用close()方法Closeable接口Closeable接口的close()与AutoCloseable接口的close()方法不同的是,Closeable规定其close()是幂等性的,即多次调用效果都是一样的,而AutoCloseable接口的close()方法多次调用可能出现错误Channel接口通道表示与能够执原创 2021-12-18 11:27:29 · 526 阅读 · 0 评论 -
Java SocketChannel虚拟类
文章目录总结SocketChannel虚拟类开启方法SocketChannel虚拟类连接相关方法SocketChannel虚拟类读取写入字节序列方法总结SocketChannel虚拟类是面向流的多路复用套接字通道套接字通道是通过调用此类的open方法之一创建的,无法为任意预先存在的套接字创建通道。新创建的套接字通道已打开,但尚未连接。 试图在未连接的通道上调用I/O操作将导致抛出NotYetConnectedException ,套接字通道可以通过调用其connect方法进行连接,一旦连接,sock原创 2021-12-18 10:56:11 · 443 阅读 · 0 评论 -
Java ServerSocketChannel虚拟类
总结ServerSocketChannel虚拟类是面向流的侦听套接字的多路复用通道ServerSocketChannel服务器套接字通道是通过调用此类的open()方法创建的,无法为任意预先存在的ServerSocket创建通道新创建的服务器套接字通道已打开,但尚未绑定, 试图调用未绑定服务器套接字通道的accept()方法将导致抛出NotYetBoundException可以通过调用此类定义的bind()方法之一来绑定服务器套接字通道ServerSocketChannel虚拟类方法原创 2021-12-18 10:18:29 · 344 阅读 · 0 评论 -
java ScatteringByteChannel接口
总结实现ScatteringByteChannel接口的通道是一种可以从通道读取字节到一系列缓冲区的通道分散读取操作在一次调用中将字节序列读取到一个或多个给定的缓冲区序列中。在实现网络协议或文件格式(例如,将由一个或多个固定长度标头和可变长度正文组成的段读取到数据分组)时,分散读取通常很有用类似的聚集写入操作在GatheringByteChannel接口中定义。ScatteringByteChannel接口方法方法名作用long read(ByteBuffer[] dsts原创 2021-12-17 22:19:37 · 848 阅读 · 0 评论 -
java GatheringByteChannel接口
总结实现GatheringByteChannel接口的通道可以将一系列缓冲区的字节写入通道聚集(Gathering)写入操作在一次调用中从一个或多个给定的缓冲区序列写入字节序列。在实现网络协议或文件格式 (例如,将数据组写入到由一个或多个固定长度头和可变长度体组成的段中)时,聚集写操作通常很有用与之对应的分散读取操作在ScatteringByteChannel接口中定义GatheringByteChannel接口方法方法名作用long write(ByteBuffer[]原创 2021-12-17 21:50:29 · 931 阅读 · 0 评论 -
java ByteChannel接口
总结ByteChannel接口没有定义任何新方法,只是简单地统一ReadableByteChannel和WritableByteChannel实现ByteChannel接口的通道表示同时可以读取和写入字节的通道原创 2021-12-17 21:22:37 · 330 阅读 · 0 评论 -
java WritableByteChannel接口
总结实现WritableByteChannel接口的通道是可以写入字节的通道在任何给定时间,只能对可写通道执行一次写入操作。如果一个线程在通道上启动写操作,那么尝试启动另一个写操作的任何其他线程都将阻塞,直到第一个操作完成。其他类型的I/O操作是否可以与写操作同时进行取决于通道的类型WritableByteChannel接口方法方法名作用int write(ByteBuffer src)从给定缓冲区ByteBuffer 将字节序列写入此通道,返回的int表示写入通道的字节个原创 2021-12-17 21:18:38 · 904 阅读 · 0 评论 -
java ReadableByteChannel接口
总结实现ReadableByteChannel接口表示该通道是可以读取字节的通道在任何给定时间,在可读通道ReadableByteChannel上只能进行一次读取操作。如果一个线程在通道上启动读取操作,那么尝试启动另一个读取操作的任何其他线程都将阻塞,直到第一个操作完成。其他类型的I/O操作是否可以与读取操作同时进行取决于通道的类型ReadableByteChannel接口方法方法名作用int read(ByteBuffer dst)从该通道将字节序列读取并填入到给定的缓冲原创 2021-12-17 21:09:29 · 1350 阅读 · 0 评论 -
java AbstractSelectableChannel虚拟类
总结AbstractSelectableChannel虚拟类是的多路复用通道SelectableChanne基本实现类此类定义处理通道注册、注销和关闭机制的方法,它保持此通道的当前阻塞模式及其当前选择键集SelectionKey[],它执行实现java.nio.channels.SelectableChannel规范所需的所有同步AbstractSelectableChannel虚拟类继承SelectableChannel,SelectableChannel虚拟类可以看我这篇文章 Selectabl原创 2021-12-17 20:32:23 · 319 阅读 · 0 评论 -
java SelectableChannel虚拟类
文章目录总结SelectableChannel虚拟类方法register(Selector sel, int ops, Object att)方法详解register方法可能引发的异常总结SelectableChannel虚拟类是一种可通过Selector多路复用的通道,为了与选择器一起使用,必须首先通过register方法注册此类的实例。此方法返回一个新的SelectionKey对象,该对象表示频道在选择器中的注册,一旦向选择器注册,通道将保持注册状态,直到取消注册为止。这涉及取消选择器分配给通道的原创 2021-12-15 20:06:21 · 645 阅读 · 0 评论 -
Java AbstractInterruptibleChannel虚拟类
总结AbstractInterruptibleChannel虚拟类是可中断通道的基本实现类(模板方法类)AbstractInterruptibleChannel虚拟类封装了实现通道异步关闭和中断所需的小型框架,具体的通道类必须在调用可能无限期阻塞的I/O操作之前和之后分别调用begin和end方法。为了确保始终调用end方法,应在try finally块中使用这些方法使用示例 boolean completed = false; try { begin(); complet原创 2021-12-15 19:18:00 · 156 阅读 · 0 评论 -
java InterruptibleChannel接口
总结实现InterruptibleChannel接口表明该通道是可以异步关闭和中断的通道实现此接口的通道是异步关闭的:如果一个线程在可中断通道InterruptibleChannel上的I/O操作中被阻塞,那么另一个线程可以调用通道的close方法。 这将导致被阻塞的线程接收AsynchronousCloseException实现此接口的通道也是可中断的:如果一个线程在可中断通道上的I/O操作中被阻塞,那么另一个线程可以调用被阻塞线程的Thread#interrupt()方法。这将导致通道关闭,阻塞原创 2021-12-15 18:55:56 · 310 阅读 · 0 评论