永发信息网

Java NIO和IO的区别

答案:3  悬赏:10  手机版
解决时间 2021-01-28 17:44
Java NIO和IO的区别
最佳答案
最简单粗暴的理解就是:
1. io 非异步, 阻塞
2. Nio 异步, 非阻塞
你把 "异步" 及 "阻塞" 弄清楚了, 你就是大牛了
全部回答
NIO是new IO,是IO的升级版。
  传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。
  使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。
  由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。
参考:csdn博客
Java NIO和IO的主要区别如下:
1.NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码。NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。传统的IO操作属于阻塞型,严重影响程序的运行速度。
2,。流与块的比较。原来的 I/O 库(在 java.io.*中) 与 NIO 最重要的区别是数据打包和传输的方式。正如前面提到的,原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。
面向流 的 I/O 系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易。链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的 I/O 通常相当慢。
3.一个 面向块 的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
农村信用社南街分社(胜利路振华小学斜对面)地
福禧半岛大酒店地址在什么地方,我要处理点事
鸭血怎么才能化成水装
【预应力混凝土结构】预应力结构是什么意思
如何快速判断他是不是骗子?
面起饼的意思是什么啊?知道的请说下!
请问 风扫磨和立磨是同一种吗
问:煮菜的时候油炸到脸上去了 留下了一个黑
茗香阁茶旅社地址在什么地方,我要处理点事
农村信用社城关分社(博浪沙街第二人民医院对
等式x-1/x(x-1)=1/x成立的条件是?当x=3时,分
朱元璋是哪族人
请英语听力高手进来,听懂这个听力需要达到什
小学生寒假假期实践活动
农村信用社城南分社(南干道国税局斜对面)地址
推荐资讯
婆婆来了方鸿俊和刘小雅的扮演者是谁她们两还
意识孝于亲,所当执.悌于长,宜先知.什么意思
2019年新课标两导两练高效学案五年级数学上册
炫彩美甲店地址好找么,我有些事要过去
电脑组装维修监控地址在什么地方,我要处理点
磨练意志的成语
苏州市公安局地址在哪,我要去那里办事
上饶银行(三清山支行)地址在哪,我要去那里办
寸八银坊怎么去啊,我要去那办事
前天在网上订的动车票需要到车站换取纸质票吗
听说妙峰山求子特别灵验,有人想去吗
雾灵垂钓园地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?