面试题答案
一键面试数据传输方式
- 通道(Channel):基于块(block)传输数据,可直接与缓冲区(Buffer)交互,数据读写以块为单位,效率较高。例如从文件通道读取数据到缓冲区时,会一次性读取尽可能多的数据块填充缓冲区。
- 传统流(Stream):基于字节或字符逐个传输数据,数据传输按顺序依次进行,每次读写一个字节或字符。如使用
InputStream
读取数据时,通常是逐个字节读取。
读写模式
- 通道(Channel):支持双向读写(某些通道类型,如
SocketChannel
),既可以从通道读取数据到缓冲区,也可以将缓冲区的数据写入通道。并且支持非阻塞I/O操作,可在不阻塞线程的情况下进行读写,例如在处理多个并发连接时,线程可以在通道未准备好读写时去执行其他任务。 - 传统流(Stream):分为输入流和输出流,只能单向操作,输入流用于读取数据,输出流用于写入数据。而且流的读写操作是阻塞的,即当进行读写时,线程会被阻塞,直到读写操作完成,例如在
InputStream
调用read()
方法时,线程会等待数据可读,期间不能执行其他任务。