首页 > 试题广场 >

请你讲一下Java NIO

NIO弥补了原来同步阻塞IO的不足,它在标准Java代码中提供了高速的、面向块的IO。通过定义包含数据的类,以及通过以块的形式处理这些数据。NIO包含三个核心的组件:Buffer(缓冲区)、Channel(通道)、Selector(多路复用器)。Buffer是一个对象,它包含一些写入或者要读出的数据。在读取数据时,它是直接读到缓冲区中的。在写入数据时,写入到缓冲区中,任何时候访问NIO中的数据,都是通过缓冲区进行操作。Channel是一个通道,可以通过它的读取和写入数据,它就像自来水管一样,网络数据通过Channel读取和写入。通道和流的不同之处在于通道是双向的,流只是在一个方向上移动而且通道可以用于读、写或者同时读写。Selector会不断地轮询注册在其上的Channel,如果某个Channel上面有心的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的IO操作。
发表于 2022-07-25 10:55:47 回复(1)
JavaNIO指的是同步非阻塞,比较经典的例子是类似一个socket监听接收不管有没有数据到达都立即返回一个值,只要没有获取到数据就会循环调用监听。
发表于 2022-06-12 03:35:11 回复(0)
啥呀,不想背这种
发表于 2023-03-30 17:09:20 回复(0)
NIO就是有3个核心组件,分辨是Buffer,Channel,Selector。 Buffer:缓冲区,读写数据都要进过缓冲区,而不是经过流 Channel: 通道,全双工双向通道。用来读取和写入数据的。 Selector:多路复用器,不断的轮询注册在Selector上的Channel,如果有新的TCP接入,就会被轮询出来。Channel变成就绪状态,SelectionKey获取Channel的集合,进行后续IO操作。JDK使用epoll(),没有了最大连接句柄1024/2048的限制,一个线程负责Selector的轮询,就能接入成千上万的客户端
发表于 2022-08-11 19:39:53 回复(0)
nio是同步非阻塞io,它弥补了原来同步IO的不足,核心组件(通道,缓冲区,选择器),选择器是实现非阻塞IO的关键,它允许一个线程管理多个通道事件并选择已经就绪的IO进行处理,使用选择器可以减低线程开销
发表于 2023-08-14 09:05:07 回复(0)
这是什么东西??面试要真考到我直接开摆
发表于 2022-09-24 23:55:47 回复(2)
NIO:同步IO模型 中的非阻塞IO模型 在BIO基础上进行改进 buffer channel selector 当一个用户请求发送过来,可以进行其他的操作,但是进行不断的轮询操作,但在进行数据获取的时候,会进行阻塞的阶段。 NIO包括三个核心组件:Buffer(缓冲区)、Channel(通道)、Selector(多路复用器)。Buffer是一个对象,它包含一些写入或者读出的数据,每次数据访问都会到达缓冲区,Channel是一个通道,通过它的读取和写入数据,它是全双工的。而Selector会不断的轮询注册在其上的Channel,如果Channel上有新的TCP连接接入、读和写事件,这个Channel就处于就绪阶段,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的IO操作
编辑于 2024-04-02 17:04:40 回复(0)
NIO:同步IO模型 中的非阻塞IO模型 在BIO基础上进行改进 buffer channel selector 当一个用户请求发送过来,可以进行其他的操作,但是进行不断的轮询操作,但在进行数据获取的时候,会进行阻塞的阶段。 buffer是缓冲区,数据都是在这里进行存储的,即写入数据就是写到缓冲区中,读取数据也是读到缓冲区中。 channel是通道,可以通过它完成数据的读取和写入,网络数据通过channel写入buffer,buffer中的数据也是通过channel进行读取的,通道是双向的。 selector是选择器,通过对注册的channel进行轮询,来得到当前channel的状态,如果某个channel处于就绪状态,selector就会得到它的状态并通过selectionkey获取其集合,进行后续的io操作
编辑于 2024-03-16 11:43:45 回复(0)
NIO是同步非阻塞 弥补了BIO的不足 NIO包括三个核心的组件 buffer缓存区 channel通道 selector 多路复用器
编辑于 2024-03-05 18:10:47 回复(0)
Java NIO综合和非阻塞IO和IO多路复用的概念,其主要分为四个部分,IO多路复用程序,包括channel和selector,然后文件事件分发器,然后文件事件处理器,最后是底层socket连接,每个channel都对应一个fd文件描述符或者是socket连接。然后监听器轮询事件客户端请求数据是否到达,如果到达,则将其发送给文件事件分发器,然后文件事件分发器根据不同的事件类型交给不同的事件处理器处理。
发表于 2023-11-02 14:46:52 回复(0)
同步非阻塞 多个通道链接多个buffer buffer里面存储读取数据 多路复用器会进行轮询查看 查看新的tcp连接 选择新的tcp通道
发表于 2023-08-18 09:44:38 回复(0)
NIO包含三个核心的组件:Buffer(缓冲区)、Channel(通道)、Selector(多路复用器)。 (1)Buffer是一个对象,它包含一些要写入或者要读出的数据。 (2)Channel是一个通道,可以通过它读取和写入数据,它就像自来水管一样,网络数据通过Channel读取和写入。 通道与流的不同之处在于通道是双向的,流只是在一个方向上移动而且通道可以用于读、写或者同时用于读写。 (3)Selector会不断地轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的I/O操作
发表于 2023-08-01 11:15:09 回复(0)
NIO是非阻塞同步io。弥补了BIO的不足,BIO在发起read之后到从内核拷贝数据到用户之间一直被阻塞。NIO是面向块的,高速的同步io。它由以下三个组件构成:buffer channel 和selector。buffer是缓冲区,数据都是在这里进行存储的,即写入数据就是写到缓冲区中,读取数据也是读到缓冲区中。channel是通道,可以通过它完成数据的读取和写入,网络数据通过channel写入buffer,buffer中的数据也是通过channel进行读取的,通道是双向的。selector是选择器,通过对注册的channel进行轮询,来得到当前channel的状态,如果某个channel处于就绪状态,selector就会得到它的状态并通过selectionkey获取其集合,进行后续的io操作
编辑于 2023-07-20 13:00:04 回复(0)
Java NIO是Java的一种新的IO API,它提供了与标准IO API不同的工作方式。NIO支持面向缓冲区的、基于通道的IO操作。NIO将数据读取到缓冲区中,将缓冲区写入通道中。这种方式可以使用内存映射文件来实现文件的读写,从而提高了IO操作的效率。相比于传统的IO API,NIO的优势在于它可以处理大量的并发连接,而且可以使用较少的线程来处理这些连接。这使得NIO非常适合开发高性能的网络应用程序。如果你想深入了解Java NIO,可以参考Java NIO的官方文档或者一些相关的书籍。
发表于 2023-03-26 16:40:25 回复(0)
46
发表于 2023-03-07 10:03:29 回复(0)
m
发表于 2022-10-12 15:24:31 回复(0)