随笔分类 - NIO
摘要:NIO和IO的区别,应用场景? NIO和IO的主要区别 面向流和面向缓冲 Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。 它不能前后移动流中的数据。如果需要前后移动从流中读
阅读全文
摘要:Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。 创建管道 通过Pipe.open()方法打开管道。例如: 向管道写数据 要向管道写数据,需要访问sink通道。 通过调用SinkChannel的w
阅读全文
摘要:DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。 打开 DatagramChannel 下面是 DatagramChannel 的打开方式: 接收数据 通过receive()方法从DatagramCha
阅读全文
摘要:ServerSocketChannel是一个可以监听进来的TCP连接的通道,就像标准IO的ServerSocket一样。ServerSocketChannel类在java.nio.channels包中。 打开 ServerSocketChannel 通过调用 ServerSocketChannel.
阅读全文
摘要:SocketChannel是一个连接到Tcp网络套接字的通道。可以通过以下两种方式创建SocketChannel: 1、打开一个SocketChannel并连接到互联网上的某台服务器。 2、一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。 打开Socke
阅读全文
摘要:FileChannel是一个连接到文件的通道,可以通过文件通道读写文件 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它,但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStr
阅读全文
摘要:选择器是java NIO中能够检测一到多个NIO通道(Channel),并能知晓是否为诸如读写时间做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接 为什么用Selector 仅用单个线程处理多个Channels的好处就是只需要更少的线程来处理Channel。事实上
阅读全文
摘要:在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。 transferFrom() 方法的输入参数position表示从position处开始向目标文件写入数据,count表示
阅读全文
摘要:scatter/gather用于描述从Channel中读取或者写入到Channel的操作。 分散(scatter):从Channel中读取在读操作中将读取的数据写入多个Buffer中。因此,Channel将从Channel中读取的数据分散(scatter)到多个Buffer中。 聚集(gather)
阅读全文
摘要:使用Buffer一般遵循以下四个步骤 写入数据到Buffer 调用flip() 从Buffer中读取数据 调用clear()或者compact()方法 当向buffer写入数据时,buffer会记录下写了多少数据,一旦要读取数据,需要通过flip()将Buffer从写模式切换到读模式。在读模式下,可
阅读全文
摘要:Java NIO的通道类似流,但又有些不同 既可以从通道中读取数据,也可以写数据到通道。但是流的读写通常是单向的 通道可以异步读写 通道中的数据通常总是要先读到一个Buffer,或者总是从Buffer中写入 Channel实现类 FileChannel:从文件中读取数据 DatagramChanne
阅读全文
摘要:Java NIO由下列几个核心部分组成: Channels(通道) Buffers(缓冲区) Asynchronous IO(异步IO) Channel 和 Buffer 基本上所有的IO在NIO中都是从一个Channel开始,Channel有点像流。数据可以从Channel读到Buffer中,也可
阅读全文

浙公网安备 33010602011771号