在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()获取。
时间: 2024-10-27 17:44:10