java中的NIO基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的NIO基础相关的知识,希望对你有一定的参考价值。

在jdk1.4中,加入了一个新的包,java.nio.*,这个包引入了新的javaI/O库,目的是为了提高速度,实际上,旧的I/O包也使用nio重新实现过。

相对于io,nio中的这个n代表什么呢?《java编程思想》直接把小标题取名为"新I/O",另一种说法是Non-blocking的首字母,不管怎样,nio也确实是一种新的处理非阻塞的IO。

NIO的几个核心组成部分:Chennels(通道),Buffers(缓存),Selectors(选择器)。

我们可以把通道(Channel)想是一个装满水的大水缸,而缓存(Buffer)则是水桶,水桶可以装满水运送到别的地方,我们没有与水缸有直接接触,都是通过水桶(Buffer)直接交互。为了更快的运送更多的水,我们可以使用多个水桶,并可以选择(Selector)哪些水桶怎么装水,当然我们不仅可以从水缸里通过水桶取水还可以送水到水缸里。

java中主要的Channel实现:

FileChannel:用于文件IO,可以通过FileInputStream,FileOutputStream,RandomAccessFile对象的getChannel()获取文件通道。
DatagramChannel:是一个能收发UDP包的通道。使用DatagramChannel.open()打开通道。
SocketChannel:是一个连接到TCP网络套接字的通道。使用SocketChannel.open()获取。
ServerSocketChannel:是一个针对面向流的侦听套接字的可选择通道,使用ServerSocketChannel.open()获取。














以上是关于java中的NIO基础的主要内容,如果未能解决你的问题,请参考以下文章

不惑JAVA之JAVA基础 - NIO

不惑JAVA之JAVA基础 - NIO

Java NIO:NIO概述

Java基础知识强化之IO流笔记80:NIO之 ServerSocketChannel

Java NIO:NIO概述

java NIO基础