
NIO
云海无涯victory
记录生活点滴
展开
-
java NIO与IO的区别
1、IO是面向流的,阻塞的2、NIO是面向缓冲区的,非阻塞IO,选择器转载 2017-06-07 21:47:16 · 220 阅读 · 0 评论 -
Java NIO 之缓冲区
1、缓冲区(Buffer)在NIO中负责数据的存取。缓冲区就是数组,用于存储不同数据类型的数据,根据数据类型不同(boolean除外),提供了相应类型的缓冲区:ByteBuffer,CharBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,DoubleBuffer。①管理方式基本一致,通过allocate()获取缓冲区ByteBuf转载 2017-06-09 17:01:41 · 205 阅读 · 0 评论 -
Java NIO之 直接缓冲区与非直接缓冲区
非直接缓冲区:通过allocate()方法分配缓冲区,将缓冲区建立在JVM的内存中。直接缓冲区:通过allocateDirect()方法分配直接缓冲区,将缓冲区建立在物理内存中。可以提高效率。字节缓冲区要么是直接的,要么是非直接的。如果为直接字节缓冲区,则Java 虚拟机会尽最大努力直接在此缓冲区上执行本机I/O 操作。也就是说,在每次调用基础操作系统的一个本机I/O 操作转载 2017-06-09 19:19:47 · 698 阅读 · 0 评论 -
Java NIO之通道(Channle)
1、通道:用于源节点与目的节点的连接。在Java NIO中负责缓冲区中数据的传输。通道本身不存储数据,因此需要配合缓冲区进行传输。Channel只能与Buffer 进行交互 。2、通道的主要实现类FileChannel:用于读取、写入、映射和操作文件的通道。DatagramChannel:通过 UDP 读写网络中的数据通道。 SocketChannel:通过 TCP转载 2017-06-09 21:40:59 · 413 阅读 · 0 评论 -
Java NIO 之分散与聚集
1、分散读取:将通道中的数据分散到多个缓冲区中(按照缓冲区的顺序,从Channel 中读取的数据依次将Buffer 填满。),聚集写入:将多个缓冲区中数据聚集到通道中(按照缓冲区的顺序,写入position 和 limit 之间的数据到 Channel),2、FileChannel 的常用方法方 法 描 述int转载 2017-06-09 21:56:32 · 354 阅读 · 0 评论 -
Java NIO 之阻塞与非阻塞
1、传统的 IO流都是阻塞式的。也就是说,当一个线程调用 read()或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行 IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降。2、Java NIO 是非阻塞模式转载 2017-06-09 22:13:58 · 546 阅读 · 0 评论 -
Java NIO之阻塞式
//客户端@Testpublic void client() throws IOException{SocketChannel sChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 9898));FileChannel inChannel = FileChannel.open(Paths.get("1.转载 2017-06-10 15:17:37 · 280 阅读 · 0 评论 -
Java NIO之非阻塞式
//客户端@Testpublic void client() throws IOException{//1. 获取通道SocketChannel sChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 9898));//2. 切换非阻塞模式sChannel.configureBlocking(fa转载 2017-06-10 15:21:41 · 225 阅读 · 0 评论