JAVA的io流和nio有什么区别

JAVA的io流和nio的区别表现在:1、面向流与面向缓冲;2、阻塞与非阻塞IO;3、选择器(Selectors)。Java IO和NIO之间名列前茅个最大的区别是,IO是面向流的,NIO是面向缓冲区的。

JAVA的io流和nio有什么区别-Worktile社区

一、面向流与面向缓冲

Java IO和NIO之间名列前茅个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。 Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。

二、阻塞与非阻塞IO

Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。

三、选择器(Selectors)

Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。

来源:本文为CSDN博主「薛定谔的短耳猫」的原创文章
原文链接:https://blog.csdn.net/weixin_42100694/article/details/113812085

延伸阅读

什么是JavaIO流

JavaIO流,是一种计算机用语。主要是用于处理数据的传输。

JavaIO流三种分类方式

1.按流的方向分为:输入流和输出流

2.按流的数据单位不同分为:字节流和字符流

3.按流的功能不同分为:节点流和处理流

文章标题:JAVA的io流和nio有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37744

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月10日 下午3:22
下一篇 2023年2月10日 下午3:46

相关推荐

  • 项目管理属于工商管理吗

    项目管理在实质上是工商管理的一个分支,并在2方面表现出密切的联系:1、项目管理要求跨部门协调资源以完成特定任务。2、它需要使用工商管理的基本原理来实现项目目标。以第二点为例,工商管理的基本原理如领导、计划、组织、控制等,是项目管理过程中必不可少的。项目经理需利用这些原理安排任务、管理团队以及确保项目…

    2024年1月8日
    40800
  • vscode为什么没推荐插件

    VSCode没有直接推荐插件的原因可能是因为用户的配置环境各异、插件的应用场景多变、和插件库更新频繁。其中,用户的配置环境各异是最主要的因素。VSCode作为一个高度可定制的编辑器,旨在为广泛的技术栈和开发需求提供支持。每位用户可能工作在完全不同的项目类型上,如前端、后端、移动应用开发、数据科学等,…

    2024年4月3日
    6900
  • 泛微oa版本

    标题:泛微OA版本的详细概述 摘要:泛微OA,作为一套企业级协同办公系统,历经多个版本的迭代,功能与性能持续强化。当前版本涵盖1、集成化办公平台、2、移动办公支持、3、灵活的流程定制、4、丰富的模块集成,保障不同规模企业需求。尤其移动办公支持,为用户提供随时随地处理工作事务的能力,畅享移动设备带来的…

    2024年1月11日
    42200
  • 热门软件榜单!六大低代码软件推荐

    随着企业寻找在降低成本的同时加快软件开发的方法,低代码开发平台正变得越来越受欢迎。这些平台允许开发人员使用拖放界面和预置组件,以最少的代码创建复杂的应用程序。它不仅帮助企业加快了数字化转型的脚步,而且打破业务部门和IT部门之间的沟通障碍,让业务部门的最新需求能够更快地被实现。并且,对于中小企业来讲,低代码平台在成本方面也非常友好。企业无需耗费大量的成本购买资源和招聘专业技术人员,简单易操作的页面让无丰富经验的人员也能够快速上手,搭建符合需求的应用程序。什么样的低代码平台是好用的?合适本企业的呢?接下来,就让我们看一看受欢迎的低代码平台排行榜。

    2023年8月31日
    35200
  • 敏捷管理有哪些方法

    敏捷项目管理有比较常用的方法包括1、XP(也叫极限编程);2、Scrum;3、kanban(看板)这三种。三种方法虽有不同,但理念基本一致,完全可以根据项目的实际情况,相互补充,裁剪整合使用。 1、XP(极限编程) XP(极限编程)出现的很早,1996年,Kent Beck提出“极限编程”(Extr…

    2022年11月16日
    1.3K00
  • c编程是什么

    C编程是什么 C语言是一种广泛使用的计算机编程语言,它1、具有高效性、2、灵活性和可移植性。特别是在操作系统、硬件驱动和嵌入式系统开发中,C语言因其接近硬件的特性而备受推崇。其 最引人关注的特点之一是高效性。C语言设计简洁,提供了直接访问物理内存的能力,并支持多层次的函数调用。这使得它能够用于开发系…

    2024年4月25日
    700
  • 重点项目如何做好成交管理

    一、明确成交管理的重要性 成交管理是指在交易过程中采取有效的措施与策略、以确保销售目标的实现以及客户需求的满足。这一过程对于任何重点项目都至关重要,因为它直接影响着公司的收入和利润、客户满意度与忠诚度、以及公司在市场中的竞争地位。确立明确的成交流程、优化沟通策略、进行风险管理等是确保成交的重要手段。…

    2024年4月11日
    6600
  • 为什么Jira中的自定义字段不工作

    为了理解为何JIRA中的自定义字段不发挥作用,需要综合考虑多种因素,包括但不限于1、字段配置错误;2、权限设置不当;3、工作流关联问题;4、字段方案应用不当;5、用户界面问题;6、数据问题,在实际操作中,字段配置错误尤为常见。 详细展开:字段配置错误可能发生在自定义字段创建过程中,涉及字段类型选择不…

    2024年1月3日
    29600
  • 如何进行投资项目的选择与管理

    投资项目的选择与管理应依据项目潜在价值、风险评估、市场分析、资金效率和团队能力进行。首先,评估项目的潜在价值是基石,涉及对行业趋势、技术前景和商业模式的深入分析。例如,投资者可以借助财务模型预测项目的收益潜力,分析其在竞争环境中的可持续性,并评估其创新能力和规模效益。 一、评估潜在价值 在进行项目选…

    2024年4月11日
    6200
  • 多开浏览器是什么

    浏览器多开,又称为浏览器分身,是指通过一个浏览器能够同时登录同一网站的多个账号而不相互影响。多开浏览器是可以在同一时间内登录多个账号,并且可以保证每个账号都是独立运行的超级浏览器,也可用于跨境电商行业多账号防关联使用。 多开浏览器是可以在同一时间内登录多个账号,并且可以保证每个账号都是独立运行的超级…

    2023年5月29日
    67900

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部