首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java中OIO与NIO简单区别

NIO中,每个线程可以处理多个channel(异步)。 线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成 ?...2、NIO中channel肯定是非阻塞模式的,否则抛出异常。为什么呢?因为前面selector异步通知程序的时候,通道中的数据肯定是有的。 3、同步与阻塞是不同的概念,异步与非阻塞也是不同的概念。...目前Javanio的异步看起来是阻塞的,因为阻塞在select.select()操作上了。但是其实可以通过select.wakeUp()方法,不用一直阻塞。... 版权声明:“Java后端技术”所推送文章,为本人原创、网上收集或其他作者投稿,对于网上收集部分除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。

70740

Java NIO

了解javaNIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞 NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。...Java中的NIO 原理接说到这里,下面看一下jdk中NIO的实现和用法。jdk中的NIO的实现,主要几个部分是Channel(通道),Buffer(缓冲区),Selector(选择器)。...在调用Selector的open方时,就已经根据操作系统、内核版本决定了采用哪种IO复用策略,简单看一下sun.nio.ch.DefaultSelectorProvider#create里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 NIO 概述

二.NIO原理及通信模型 Java NIO是在jdk1.4开始使用的,它既可以说成“新I/O”,也可以说成非阻塞式I/O。下面是java NIO的工作原理: 1....下面是我理解的java NIO的通信模型示意图: 三、Java NIO概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件...与这些类一起的有一些有趣的接口,但为简单起见,我尽量在概述中不提到它们。本教程其它章节与它们相关的地方我会进行解释。...java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel...; import java.nio.channels.Selector; import java.nio.channels.SocketChannel; import java.util.Iterator

53410

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中的NIO的Files工具类的newByteChannel() 实例 利用通道实现文件的复制(非直接缓冲区) /** * 使用getChannel...写入数据的通道 //聚集写入,将数据从各个缓冲区中写入到通道中 outChannel.write(dst); inchannel.close(); outChannel.close(); } NIO...阻塞式 阻塞或者不阻塞是针对SocketChannel,ServerSocketChannel NIO中的套接字可以轻松在阻塞和非阻塞之间切换,这里我们使用NIO实现阻塞式的TCP数据传输 /**

1.1K20

Java NIO

Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。...二、NIO和IO的主要区别 下表总结了Java IO和NIO之间的主要区别: IO NIO 面向流 面向缓冲 阻塞IO 非阻塞IO 无 选择器 1、面向流与面向缓冲 Java IO和NIO...Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。...而一个NIO的实现会有所不同,下面是一个简单的例子: ByteBuffer buffer = ByteBuffer.allocate(48); int bytesRead = inChannel.read...Java NIO: 单线程管理多个连接 如果你有少量的连接使用非常高的带宽,一次发送大量的数据,也许典型的IO服务器实现可能非常契合。下图说明了一个典型的IO服务器设计: ?

67630

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。...看到NIO这么多的优点,是不是有点小激动。继续看一下他们的区别。 Java NIO与IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。...Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。...通道与缓冲区 Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer)。 Buffer:表示打开到IO设备(例如:文件、套接字)的连接。 是一块连续的内存块。

41320

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

Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector...下面是JAVA NIO中的一些主要Channel的实现: FileChannel DatagramChannel SocketChannel ServerSocketChannel 正如你所看到的,这些通道涵盖了...与这些类一起的有一些有趣的接口,但为简单起见,我尽量在概述中不提到它们。本教程其它章节与它们相关的地方我会进行解释。...以下是Java NIO里关键的Buffer实现: ByteBuffer CharBuffer DoubleBuffer FloatBuffer IntBuffer LongBuffer ShortBuffer...Java NIO 还有个 Mappedyteuffer,用于表示内存映射文件, 我也不打算在概述中说明。 Selector Selector允许单线程处理多个 Channel。

74070

简单谈谈BIO,NIO,AIO

(2)Java NIO(New IO 或 Non Blocking IO)是从 Java 1.4 版本开始引入的一个新的IO API,可以替代标准的 Java IO API。...(3)AIO 也就是 NIO 2,在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞的IO 模型。...(1)在 BIO 模式中,服务器会为每个客户端请求建立一个线程,由该线程单独负责 处理一个客户请求,这种模式虽然简单方便,但由于服务器为每个客户端的连接都采 用一个线程去处理,使得资源占用非常大。...核心部分  Java NIO 由以下几个核心部分组成: - Channels - Buffers - Selectors 虽然 Java NIO 中除此之外还有很多类和组件,但 Channel,Buffer...异步非阻塞 IO(AIO) (1)AIO 也就是 NIO 2,在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞 的 IO 模型。

22750

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的非阻塞模式使线程能够从通道请求读取数据,仅得到当前可用的部分,如果当前没有数据可用就什么都得不到。而不是在数据可读之前保持阻塞,线程能继续处理其他的事情。 非阻塞写是一样的。...选择器(Selectors) Java NIO的选择器让一个线程能够监控多个通道的输出。

75120

浅析 Java NIO

一、简介 现在使用 NIO 的场景越来越多,很多网上的技术框架或多或少的使用 NIO 技术,譬如 Tomcat、Jetty、Netty,学习和掌握 NIO 技术已经不是一个 Java 攻城狮的加分技能,...NIO 这两种通道都支持阻塞和非阻塞两种模式,阻塞模式使用就像传统中的 BIO 一样,比较简单,但是性能和可靠性都不好;非阻塞模式正好与之相反。...NIOJava 1.4 中引入,对应的代码实现在java.nio包下,涉及到的核心类关联关系,如下图: 上图中有三个关键类:Channel 、Selector 和 Buffer,它们是 NIO...不过 java NIO 并没有完全屏蔽平台的差异,它仍然是基于各个操作系统的 I/O 系统实现的,差异仍然存在。...解决了很多 NIO 的陷阱,并屏蔽了操作系统的差异,有较好的性能和编程模型。 五、参考 1、美团技术团队 - Java NIO浅析 1、hepingfly - JavaNIO 看这一篇就够了

32431

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

当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?...在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。...Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。...Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。...(Java IO: 从一个阻塞的流中读数据) 而一个NIO的实现会有所不同,下面是一个简单的例子: 1 ByteBuffer buffer = ByteBuffer.allocate(48); 2

85950

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券