BIO、NIO与NIO.2的区别与联系
BIO、NIO、NIO.2之间的区别主要是通过同步/异步、阻塞/非阻塞来进行区分的
同步:
程序与操作系统进行交互的时候采取的是问答的形式
异步:
程序与操作系统取得连接后,操作系统会主动通知程序消息
阻塞:
程序在执行一个操作的时候,在执行完毕前会一直等待
非阻塞:
程序在执行的时候,不会停止
举例:
对于Socket监听程序而言
BIO:同步阻塞
JDK1.4之前
不停地监听是否有新的连接,如果有新的连接,就使用流进行读写操作,在读写过程中程序是不能做其他事情的
对机器的性能要求较高
并发局限于应用
NIO:同步非阻塞
JDK1.4开始提供
不停地监听是否有新的连接,通过判断Socket是否为null来决定是否进行操作,只有Socket为null,才说明服务器收到了请求,但是这并不影响程序继续往下执行,如果程序想要在收到null的时候做其他事情,就可以继续往下执行。
适用于连接数目多,且连接操作时间较短的情况。如:聊天服务器。
并发局限于应用
NIO.2:异步非阻塞
JDK1.7开始提供
将事件与执行动作进行“绑定”,一旦产生了连接、读取等事件,系统会通知程序,程序收到通知后执行相关的操作
适用于连接数目多,且连接操作时间较长的情况。
并发过程中充分调用了OS
BIO、NIO与NIO.2的区别与联系的更多相关文章
- BIO、NIO、AIO 有什么区别?(未完成)
BIO.NIO.AIO 有什么区别?(未完成)
- 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别
1.引言 很多初涉网络编程的程序员,在研究Java NIO(即异步IO)和经典IO(也就是常说的阻塞式IO)的API时,很快就会发现一个问题:我什么时候应该使用经典IO,什么时候应该使用NIO? 在本 ...
- Java NIO:NIO概述
Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题.NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题.本文下面分别从Java ...
- Java NIO、NIO.2学习笔记
相关学习资料 http://www.molotang.com/articles/903.html http://www.ibm.com/developerworks/cn/education/java ...
- (转载)Java NIO:NIO概述(一)
Java NIO:NIO概述 在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题.NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题.本文下面分别从Java ...
- java学习-NIO(五)NIO学习总结以及NIO新特性介绍
我们知道是NIO是在2002年引入到J2SE 1.4里的,很多Java开发者比如我还是不知道怎么充分利用NIO,更少的人知道在Java SE 7里引入了更新的输入/输出 API(NIO.2).但是对于 ...
- NIO (一) NIO是什么
参考文档:java为什么需要NIO:https://liuchi.coding.me/2017/08/01/浅谈Java为什么需要NIO/美团技术团队 NIO浅析:https://tech.meitu ...
- Five ways to maximize Java NIO and NIO.2--reference
Java NIO -- the New Input/Output API package-- was introduced with J2SE 1.4 in 2002. Java NIO's purp ...
- 5种调优Java NIO和NIO.2的方式
Java NIO(New Input/Output)——新的输入/输出API包——是2002年引入到J2SE 1.4里的.Java NIO的目标是提高Java平台上的I/O密集型任务的性能.过了十年, ...
随机推荐
- js验证真实姓名与身份证号,手机号
最近的项目中用的需要调用实名认证的接口,实名认证接口价格相比短信而言高了不是几分钱,所以说调用实名认证的条件就要严格把关,因此用到js验证真实姓名与js验证身份证号. 进入正题 1.js验证真实姓名 ...
- UISlider常见属性
常见属性 self.mySlider.minimumValue = 0.0; // 最小值 self.mySlider.maximumValue = 10; // 最大值 self.mySl ...
- 【转】XCode: duplicate symbol 解决方案
遇到引用库重复定义的问题,需要解决. 项目需要,同时引用ZBar和QQ授权登录SDK,由于二者均使用了Base64处理数据,XCode编译时报错: duplicate symbol _base64_e ...
- 五种创建UIImage的类方法
五种创建UIImage的类方法 UIImage有五个类方法,用来创建UIImage的.下面介绍一下每个类方法的作用和创建实例. 1.使用类方法imageNamed:创建 + (UIImage *)im ...
- javascript中的 类初始化,遍历for in 以及with的用法
<script type="text/javascript"> function member(name,gender){ this.name=name; this.g ...
- android 5.X之使用Palette
这几天为了学些android5.0版本sdk的新特性,折腾了好久.AndroidStudio被我反复的安装又卸载又安装,在eclipse和AndroidStudio 之间来回折腾.没想到sdk升级到5 ...
- android中实现view可以滑动的六种方法续篇(二)
承接上一篇,上一篇中讲解了实现滑动的第五种方法,如果你还没读过,可点击下面链接: http://www.cnblogs.com/fuly550871915/p/4985482.html 这篇文章现在来 ...
- Effective Java 25 Prefer lists to arrays
Difference Arrays Lists 1 Covariant Invariant 2 Reified at runtime Erased at run time 3 Runtime type ...
- Tomcat常用的优化技巧
(1)屏蔽DNS查询 Web应用程序可以通过Web容器提供的getRemoteHost()方法获得访问Web应用客户的IP地址和名称,但是这样会消耗Web容器的资源,并且还需要通过IP地址和DNS服务 ...
- sql 查询基本语法
1.计算列 select * from emp --*表示所有的 --from emp 表示从emp表查询 select empno,enam ...