千家信息网

java中NIO的用法

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章主要讲解了"java中NIO的用法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java中NIO的用法"吧!背景Linux系统中的IO操作内部
千家信息网最后更新 2025年02月05日java中NIO的用法

这篇文章主要讲解了"java中NIO的用法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java中NIO的用法"吧!

背景

Linux系统中的IO操作内部相当复杂,下面是一张带图片的LinuxIO相关层级关系:

下面是一个简化版本Linux内部IO层级图:

对此我的理解,java程序员版本的IO理解:

java中的IO

从最早bio的只支持阻塞的bio(同步阻塞)

到默认阻塞支持非阻塞nio(同步非阻塞+同步阻塞)

再到aio(异步非阻塞)

NIO

  • FileChannel:从文件读取数据的

  • DatagramChannel:读写UDP网络协议数据

  • SocketChannel:读写TCP网络协议数据

  • ServerSocketChannel:可以监听TCP连接

示例代码: socket https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/socket/nio file https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/file/nio

AIO

示例代码: socket https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/socket/aio file https://github.com/victorsheng/verification-everything/tree/master/io/src/main/java/file/aio

NIO的应用

作为jdk的基础类库,被很多应用使用了,此处列举了几个常见的

tomcat

http://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Connector_Comparison

jetty

Prior to Jetty 9, the type of the connector reflected both the protocol supported (HTTP, HTTPS, AJP, SPDY), and the nature of the implementation (NIO or BIO). From Jetty 9 onwards there is only one prime Connector type (ServerConnector), which is NIO based and uses Connection Factories to handle one or more protocols.

https://www.eclipse.org/jetty/documentation/9.4.x/quickstart-config-what.html#intro-jetty-configuration-connectors

netty

作为nio最常用的封装类库

总结

nio更多解决的是线程资源的浪费,而非单个操作响应时间的提升

使用NIO != 高性能,当连接数<1000,并发程度不高或者局域网环境下NIO并没有显著的性能优势。

NIO并没有完全屏蔽平台差异,它仍然是基于各个操作系统的I/O系统实现的,差异仍然存在。使用NIO做网络编程构建事件驱动模型并不容易,陷阱重重。 推荐大家使用成熟的NIO框架,如Netty,MINA等。解决了很多NIO的陷阱,并屏蔽了操作系统的差异,有较好的性能和编程模型。

感谢各位的阅读,以上就是"java中NIO的用法"的内容了,经过本文的学习后,相信大家对java中NIO的用法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

阻塞 系统 差异 数据 网络 同步 学习 操作系统 代码 内容 层级 性能 更多 模型 版本 示例 陷阱 应用 支持 编程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发 业务线 产品线 山东专业网络技术基础 软件开发进度计划网络图 成都旸升互联网络科技 数据库设计一对多 用于软件开发的电脑哪种比较好 长安区应用软件开发服务供应 软件开发人员素质 电信卡无4g服务器 中石油电子券服务器崩溃 服务器日志内容 从化专业的服务器运维服务 u点家庭服务器开机要多长时间 亚马逊和腾讯云服务器区别 达梦数据库 in 深圳市君悦网络技术 金蝶kis打开数据库连接 苏州阿里云服务器上云率 台州铭宏网络技术有限公司电话 计算机3级数据库能做什么 洪浪北到广兴源互联网智慧科技园 小红书服务器开小差 沈阳软件开发学多久 有口碑的网络技术品质保障 外贸独立站域名及服务器 网络安全法应当为公安机关 数据库保存图片sql 圣魂纷争红蓝对决是什么服务器 数据库可以有多个日志文件 辽宁联通服务器dns地址云空间
0