首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java NIONIO概述

在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIOJava 4里面提供API,目的是用来解决传统IO问题。...本文下面分别从Java NIO几个基础概念介绍起。   ...一.NIO几个基础概念   在NIO中有几个比较关键概念:Channel(通道),Buffer(缓冲区),Selector(选择器)。   ...而Channel是双向,既可用来进行读操作,又可用来进行写操作。   Buffer(缓冲区),是NIO中非常重要一个东西,在NIO中所有数据读和写都离不开Buffer。...文件写入字符串"java nio",注意在调用channelwrite方法之前必须调用bufferflip方法,否则无法正确写入内容,至于具体原因将在下篇博文中具体讲述Buffer用法时阐述。

65510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java nio_(一) Java NIO 概述

    二.NIO原理及通信模型 Java NIO是在jdk1.4开始使用,它既可以说成“新I/O”,也可以说成非阻塞式I/O。下面是java NIO工作原理: 1....Java NIO服务端只需启动一个专门线程来处理所有的 IO 事件,这种通信模型是怎么实现呢?呵呵,我们一起来探究它奥秘吧。...java NIO采用了双向通道(channel)进行数据传输,而不是单向流(stream),在通道上可以注册我们感兴趣事件。...下面是我理解java NIO通信模型示意图: 三、Java NIO概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件...; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector

    54510

    Java NIO

    了解javaNIO,需要先了解同步异步以及阻塞非阻塞概念,同步/异步,阻塞/非阻塞 NIO就是采用同步非阻塞这种组合方式。或简单一点,采用是IO复用策略,可以使用一个线程管理多个IO连接。...JavaNIO 原理接说到这里,下面看一下jdk中NIO实现和用法。jdk中NIO实现,主要几个部分是Channel(通道),Buffer(缓冲区),Selector(选择器)。...综上所述,JavaNIO是以Selector为核心,基于同步非阻塞IO多路复用。 OSIO多路复用 那么,Selector是如何得知哪些通道是就已经就绪了呢?...参考文章: Java NIO系列教程 Java NIONIO概述 Java IO & NIO & NIO2 Java 网络 IO 模型 Java NIO系列教程(六) 多路复用器Selector Java...网络IO编程总结(BIO、NIO、AIO均含完整实例代码) Java NIO 反应堆模式简单模型 Java NIO(7): Epoll版Selector Linux IO模式及 select、poll

    1.2K40

    Java NIO

    Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。...二、NIO和IO主要区别 下表总结了Java IO和NIO之间主要区别: IO NIO 面向流 面向缓冲 阻塞IO 非阻塞IO 无 选择器 1、面向流与面向缓冲 Java IO和NIO...Java NIO缓冲导向方法略有不同。数据读取到一个它稍后处理缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理数据。...3、选择器(Selectors) Java NIO选择器允许一个单独线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独线程来“选择”通道:这些通道里已经有可以处理输入...Java NIO: 单线程管理多个连接 如果你有少量连接使用非常高带宽,一次发送大量数据,也许典型IO服务器实现可能非常契合。下图说明了一个典型IO服务器设计: ?

    68130

    java nio

    NIO阻塞式 3. Selector(选择器) 3.1. SelectionKey 3.2. NIO非阻塞式 4....DatagramChannel:UDP 获取通道 本地IO,提供了getChannel()方法获取通道 FileInputStream FileOutputStram RandomAccessFile 在JDK1.7中NIO...,针对各个通道提供了静态方法open() 在JDK1.7中NIOFiles工具类newByteChannel() 实例 利用通道实现文件复制(非直接缓冲区) /** * 使用getChannel...阻塞式 阻塞或者不阻塞是针对SocketChannel,ServerSocketChannel NIO套接字可以轻松在阻塞和非阻塞之间切换,这里我们使用NIO实现阻塞式TCP数据传输 /**...:读就绪 SelectionKey.OP_WRITE:写就绪 NIO非阻塞式 /** * 客户端需要使用configureBlocking(false)设置成非阻塞模式 * @throws Exception

    1.1K20

    Java NIO

    二.NIO原理及通信模型 Java NIO是在jdk1.4开始使用,它既可以说成“新I/O”,也可以说成非阻塞式I/O。下面是java NIO工作原理: 1....Java NIO服务端只需启动一个专门线程来处理所有的 IO 事件,这种通信模型是怎么实现呢?呵呵,我们一起来探究它奥秘吧。...java NIO采用了双向通道(channel)进行数据传输,而不是单向流(stream),在通道上可以注册我们感兴趣事件。...下面是我理解java NIO通信模型示意图: image.png 三、Java NIO 概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然...java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSocketChannel

    43850

    Java NIO系列教程(一)java NIO简介

    java标准IO回顾 Java 标准 IO 类库是 io 面向对象一种抽象。基于本地方法底层实现,我们无须关注底层实现。...java NIO简介 Java NIO(New IO Non Blocking IO)是从Java1.4版本开始引入一个新IO API,可以替代标准Java IO API。...Java NIO与IO主要区别 下表总结了Java NIO和IO之间主要差别,我会更详细地描述表中每部分差异。...此外,它不能前后移动流中数据。如果需要前后移动从流中读取数据,需要先将它缓存到一个缓冲区。 Java NIO缓冲导向方法略有不同。数据读取到一个它稍后处理缓冲区,需要时可在缓冲区中前后移动。...通道与缓冲区 Java NIO系统核心在于:通道(Channel)和缓冲区(Buffer)。 Buffer:表示打开到IO设备(例如:文件、套接字)连接。 是一块连续内存块。

    42020

    Java SE】Java NIO系列教程(一) Java NIO 概述

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector...Channel 和 Buffer 基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。...下面是JAVA NIO一些主要Channel实现: FileChannel DatagramChannel SocketChannel ServerSocketChannel 正如你所看到,这些通道涵盖了...以下是Java NIO里关键Buffer实现: ByteBuffer CharBuffer DoubleBuffer FloatBuffer IntBuffer LongBuffer ShortBuffer...Java NIO 还有个 Mappedyteuffer,用于表示内存映射文件, 我也不打算在概述中说明。 Selector Selector允许单线程处理多个 Channel。

    75170

    浅析 Java NIO

    一、简介 现在使用 NIO 场景越来越多,很多网上技术框架或多或少使用 NIO 技术,譬如 Tomcat、Jetty、Netty,学习和掌握 NIO 技术已经不是一个 Java 攻城狮加分技能,...NIOJava 1.4 中引入,对应代码实现在java.nio包下,涉及到核心类关联关系,如下图: 上图中有三个关键类:Channel 、Selector 和 Buffer,它们是 NIO...3.2、Buffer 类详解 接着我们再来说说 Buffer,也称为缓冲区,在 Java NIO 中负责数据存取。...不过 java NIO 并没有完全屏蔽平台差异,它仍然是基于各个操作系统 I/O 系统实现,差异仍然存在。...解决了很多 NIO 陷阱,并屏蔽了操作系统差异,有较好性能和编程模型。 五、参考 1、美团技术团队 - Java NIO浅析 1、hepingfly - JavaNIO 看这一篇就够了

    35531

    Java NIO 开发

    Java NIO 新篇介绍加示例代码 Java NIO(New IO)是 JDK 1.4 引入一组新 I/O API,用于支持非阻塞式 I/O 操作。...相比传统 Java IO API,NIO 提供了更快、更灵活 I/O 操作方式,可以用于构建高性能网络应用程序。...相比传统 Java IO,Java NIO 优点包括: 非阻塞模式:NIO 可以使用非阻塞模式进行网络编程,使程序不必等待网络操作完成才能进行其他操作,提高了程序响应速度。...我在早期有讲过Java NIO基本用法 如果初学者可以 浏览 早期Java NIO 文章 一,Channel实现类 Channel实现类 讲解 在Java NIO中,Channel是一个重要概念,...FileChannel类是Java NIO中用于对文件进行读写操作通道。它提供了一系列方法来实现文件读取和写入操作。

    7510

    Java SE】Java NIO系列教程(十二)Java NIO与IO

    当学习了Java NIO和IOAPI后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?...在本文中,我会尽量清晰地解析Java NIO和IO差异、它们使用场景,以及它们如何影响您代码设计。...Java NIO和IO主要区别 下表总结了Java NIO和IO之间主要差别,我会更详细地描述表中每部分差异。...Java NIO非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用数据,如果目前没有数据可用时,就什么都不会获取。...Java NIO: 单线程管理多个连接 如果你有少量连接使用非常高带宽,一次发送大量数据,也许典型IO服务器实现可能非常契合。下图说明了一个典型IO服务器设计: ?

    87850

    Java NIO-12.NIO和IO

    学习了Java NIO和IO API之后,就有了一个问题: 什么时候用IO,什么时候用NIO? 本文将试着阐明Java NIO和IO之间使用上区别,以及它们是如何影响到你代码设计。...Java NIO和IO之间主要区别 IO NIO 面向流 面向缓冲区 阻塞IO 非阻塞IO 选择器 下面的表格总结了Java NIO和IO区别。表格后面对更多细节进行说明。...如果需要前后移动流中数据,就需要先将它们存在缓冲区中。 Java NIO面向缓冲区方式有点不同。数据被读到一个稍后才使用缓冲区。缓冲区中数据能根据需要前后移动。...Java NIO非阻塞模式使线程能够从通道请求读取数据,仅得到当前可用部分,如果当前没有数据可用就什么都得不到。而不是在数据可读之前保持阻塞,线程能继续处理其他事情。 非阻塞写是一样。...在IO请求非阻塞空闲期间,线程通常在处理其他通道IO。这样,一个线程能够处理多个通道输入输出。 选择器(Selectors) Java NIO选择器让一个线程能够监控多个通道输出。

    75820

    Java NIO 总结: NIO技术基础回顾

    一、基本概念 Java NIOJava 1.4版本引入一套新IO API,它提供了非阻塞IO操作功能,支持面向缓冲区、基于通道IO操作。...Java NIO核心组件包括Channels、Buffers和Selectors。 Channels(通道) 通道是Java NIO中用于数据读写对象,类似于传统IO中流。...内存管理:Java NIO缓冲区可以重复利用,减少了频繁内存分配和回收,降低了内存消耗。 可扩展性:Java NIO基于事件驱动线程模型可以轻松地处理大量并发连接,提高了系统可扩展性。...其工作流程如下: 三、NIO与BIO区别 Java NIO(New IO)和BIO(Blocking IO)是Java中两种不同I/O处理方式,它们在处理数据传输时有着显著区别。...四、基本使用 下面是一个简单Java NIO编程使用Java NIO进行文件读写操作: import java.io.IOException; import java.nio.ByteBuffer;

    24220

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券