我们都知道IO包括磁盘IO和网络IO,相对于CPU的速度,IO性能差了好几个数量级,应用程序的瓶颈主要在IO这块。

NIO的出现就是为了优化IO性能,JDK1.4之前IO都是使用流来进行IO操作,流操作都是单向的,读写都是阻塞的。JDK1.4版本添加了NIO,NIO实际上是基于操作系统的新IO特性(select、poll、epoll)。

NIO在Java中叫New IO,多路复用IO。NIO的特性是系统在进行IO操作时不会阻塞(在select()和缓冲区拷贝时还是会阻塞),可以去干一些其他事情,你可以随时过来询问一下IO是否就绪。比如:你去菜市场买菜,你准备买一只鸭子,你可以和老板说你要一只鸭子,但是鸭子还没有杀好,这时你可以和老板说,你先杀好,我过一会在来拿,这时你可以去买其他菜,待会在过来。这样的好处就是避免了等待(阻塞),让费系统资源。

传统的网络IO服务器实现

一个线程用来接收新的连接accept,每次有新的连接过来后新开一个线程来处理这个连接的IO,或者使用连接池。这样一个线程在连接断开之前只能一直服务于这个连接,实际上连接不是非常活跃,这中间会导致极大的资源浪费。而且操作系统有线程数量的限制,无法无限的开启新线程来处理高并发的连接数。

NIO网络服务器实现

相对于传统IO,Nio能够高效的利用线程资源,因为IO非阻塞特性,一个线程可以处理多个连接,这样相同数量的连接池对比传统IO可以服务更多数量的连接,提高服务器的并发能力。

java nio 连接数_Java NIO 基础一 NIO概念相关推荐

  1. Java传统的io和nio区别_Java中IO和NIO的本质和区别

    简介 终于要写到java中最最让人激动的部分了IO和NIO.IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是java.io包中的所有类,他们是从java1.0开始就 ...

  2. java nio 海子_java 网络编程入门-NIO

    这篇来讲解java网络编程之后高性能模型.NIO,有些书成为Non-blocking IO 非阻塞IO,这个是相对于BIO来说的.还有一种说法,New IO,顾名思义新的IO,这个是相对于旧版io的定 ...

  3. 零基础java自学就业_java零基础到就业需要多长时间呢?

    展开全部 先以肯定的语气说明一下自学e68a84e8a2ad62616964757a686964616f31333433663030Java,多久可以找到工作: 按照目前Java的体系来说,Java的 ...

  4. java运行时_java编译时与运行时概念与实例详解

    Java编译时与运行时很重要的概念,但是一直没有明晰,这次专门博客写明白概念. 基础概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只 ...

  5. java mina多线程_Java多线程基础总结九:Mina窥探(1)

    一直以来的多线程的基础总结都是脱离应用的,但是要说多线程的应用就不能不说Mina.Apache Mina作为一个高性能的Java异步并发网 络通讯框架,其内部的多线程的设计和实现可谓是学习多线程的良药 ...

  6. java preparedstatement 关闭_java - 如果基础连接已关闭,为什么isClosed()方法对PreparedStatements不返回true? - 堆栈内存溢出...

    就像标题所说的那样,我想知道为什么准备好的语句.isClosed()方法在关闭基础流(使用JDBC)后将返回false. public void someTest() throws SQLExcept ...

  7. java 正则表达式语法_Java 正则表达式基础语法

    基础符号 首尾匹配^:匹配输入字符串开始的位置 $:匹配输入字符串结尾的位置 例:"^hello$"含义为该字符串开头必须为h,结尾必须为oprivate static void ...

  8. java填空题_Java语言基础知识填空题

    Java语言基础知识填空题 想学java语言的人,要多做题才能巩固知识,下面小编为大家带来了Java语言基础知识的填空题,欢迎大家阅读! Java语言基础知识填空题. 1.浮点型数据根据数据存储长度和 ...

  9. java 并发 面试_Java 并发基础常见面试题总结

    1. 什么是线程和进程? 1.1. 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个程序即是一个进程从创建,运行到消亡的过程. 在 Java 中,当我们启 ...

最新文章

  1. 浅析物流行业文档规范管理
  2. SDN,这一年都经历了什么
  3. 插入排序法(思路及代码实现)
  4. 银行理财不再保本保息,你还敢买吗?
  5. 90% 的人都会答错的面试题 == 和 equals 的区别
  6. 《Jquery实战》第3版:译者序 Frank Xu Lei
  7. 原来,是我的眼光出了错
  8. 验证Java编程环境是否成功时出现“'javac'不是内部或外部命令,也不是可运行的程序或批处理文件”
  9. Git 简介和命令行操作
  10. 大数据的价值与发展趋势
  11. 「终身免费」淘小虾,Shopee浏览器数据分析插件
  12. Postman下载安装及汉化
  13. 23. 电容触摸按键实验
  14. 让我摘下星星送给你_去最美的地方,我摘下星星给你。
  15. 树莓派4B连接显示器 黑屏、左上角有光标问题
  16. 【小5聊】layui第三方插件-xm-select参数
  17. 7000字长文深度解读:DTC商业模式,对品牌增长的颠覆式影响
  18. Leetcode 881:救生艇
  19. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之 Model Confidence v2
  20. Excel中IF函数的使用

热门文章

  1. 95-140-104-源码-transform-算子flatMap
  2. 【Flink】Flink Group by 操作 报错 Expression xxx is not being grouped
  3. IDEA:AbstractMethodError: Receiver class org.jetbrains.plugins.scala ScTraitImpl not define or inher
  4. Mac:Split文件分割命令
  5. 40 个 常用的 SpringBoot 注解,你知道几个?
  6. 从零实现SpringBoot简易读写分离,也不难嘛!
  7. MySQL 成薪资跳板了?
  8. mariadb java_java 连接mariadb 无法获取数据源的问题,在ubuntu上部署的时候(原创)...
  9. Docker用Portainer将Solr集群添加入Repository
  10. SpringMVC框架----SpringMVC的自定义类型转换器