总结
- 实现ReadableByteChannel接口表示该通道是可以读取字节的通道
- 在任何给定时间,在可读通道ReadableByteChannel上只能进行一次读取操作。如果一个线程在通道上启动读取操作,那么尝试启动另一个读取操作的任何其他线程都将阻塞,直到第一个操作完成。其他类型的I/O操作是否可以与读取操作同时进行取决于通道的类型
ReadableByteChannel接口方法
方法名 | 作用 |
---|---|
int read(ByteBuffer dst) | 从该通道将字节序列读取并填入到给定的缓冲区ByteBuffer,返回的int表示读取的字节个数,可以随时调用此方法。但是,如果另一个线程已经在此通道上启动了读取操作,则此方法的调用将被阻止,直到第一个操作完成。读取之前会判断缓冲区是否还有空闲空间,如果没有则不会从通道读取字节序列 |
read(ByteBuffer dst)方法可能引发的异常
异常名 | 意义 |
---|---|
NonReadableChannelException | 如果此通道未打开就进行读取 |
ClosedChannelException | 如果此通道关闭了 |
AsynchronousCloseException | 如果另一个线程在该线程进行读取操作时关闭此通道 |
ClosedByInterruptException | 如果另一个线程在当前线程进行读取操作时中断当前线程,从而关闭通道并设置当前线程的中断状态 |
IOException | 如果发生其他I/O错误 |