摘要:
阻塞IO 传统的 IO 流都是阻塞式的。 也就是说,当一个线程调用 read() 或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。 因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务 阅读全文
摘要:
Channel聚集(gather)写入: 聚集写入( Gathering Writes)是指将多个 Buffer 中的数据“聚集”到 Channel。 特别注意:按照缓冲区的顺序,写入 position 和 limit 之间的数据到 Channel 。 Channel分散(scatter)读取: 分 阅读全文
摘要:
通道(Channel)的数据传输(采用非直接缓冲区) 内存映射文件(采用直接缓冲区) transferTo&transferFrom将数据从源通道传输到其他 Channel 中(采用直接缓存区) 阅读全文
摘要:
通道(Channel): 由java.nio.channels包定义的,Channel表示IO源与目标打开的连接,Channel类似于传统的“流”,只不过Channel本身不能直接访问数据,Channel只能与Buffer进行交互。通道主要用于传输数据,从缓冲区的一侧传到另一侧的实体(如文件、套接字 阅读全文
摘要:
直接缓冲区与非直接缓冲区的概念: 1)非直接缓冲区:通过 创建的缓冲区,在JVM中内存中创建,在每次调用基础操作系统的一个本机IO之前或者之后,虚拟机都会将缓冲区的内容复制到中间缓冲区(或者从中间缓冲区复制内容),缓冲区的内容驻留在JVM内,因此销毁容易,但是占用JVM内存开销,处理过程中有复制操作 阅读全文