java NIO与BIO区别

奔跑的小方 奔跑的小方 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
BIO是同步的阻塞而NIO是同步非阻塞,看到一个结论:因为非阻塞 IO 处理连接是异步的,当某个连接发送请求到服务器,服务器把这个连接请求当作一个请求“事件”,并把这个“事件”分配给相应的函数处理。我们可以把这个处理函数放到线程中去执行,执行完就把线程归还,这样一个线程就可以异步的处理多个事件。而阻塞式 I/O 的线程的大部分时间都被浪费在等待请求上了。
上面提到阻塞IO大部分时间浪费在等待连接上,我认为是说ServerSocket.accept()这个方法。因为服务端必须要有连接才能和客户端进行交互。而非阻塞IO在Selector.selector()方法上也会阻塞。得到准备就绪的通道。当然可以设置立即返回,但是没有准备好的通道,也是无法和客户端进行交互的。
那么NIO较之BIO性能好在何处?

求各位大神解释下
...全文

相关推荐

浅谈Java中BIO、NIO和AIO的区别和应用场景

主要介绍了Java中BIO、NIO和AIO的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38559203

Java 中IO流分为哪几种? BIO、NIO、AIO有什么区别?

一、IO 流分为几种 Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的 字符流和字节流是根据处理数据的不同来区分的。字节流按照8位传输,字节流是最基本的,所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。 1、字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2、字节流提供了处理任何类型的IO操作的功能

weixin_38599537

Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析

Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析

hao_kkkkk

Java中BIO、NIO、AIO的理解

主要为大家详细介绍了Java中BIO、NIO、AIO的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

weixin_38625192

复习 J2SE基本内容 IO NIO AIO 的区别

IO 是面向流的,NIO 是面向缓冲区的 IO 流是阻塞的,NIO 流是不阻塞的 IO 没有选择器,NIO 有选择器     从编程模式上来看AIO相对于NIO的区别在于,NIO需要使用者线程不停的轮询IO对象,来确定是否有数据准备好可以读了,而AIO则是在数据准备好之后,才会通知数据使用者,这样使用者就不需要不停地轮询了。当然AIO的异步特性并不是Java实现的伪异步,而是使用了系统底层API的支持,    BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程,每个连接共用一个线程。   NIO的最重要

weixin_38713801
评论 2
收藏 已收藏
分享
返回顶部
奔跑的小方
Java 51,407 成员 86,130 内容