纠纷奇闻作文社交美文家庭
聚热点
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

javaNio初级学习

4月20日 吴梦筱投稿
  javaNio学习笔记(一)
  学习参考文档:
  http:tutorials。jenkov。comjavanioindex。html什么是javaNio
  javaNio是javanewIO。是java1。4新增的API。它提供了另一种不同于标准IO的实现方式来实现IO知其然知其所以然
  为什么要使用javaNio?
  弄懂了为什么要使用JavaNIO也就是知道我们为啥要学NIO了。
  首先NIO出现就是提供了替代标准IO的一种IO实现方式。那么为什么要替换标准IO呢?
  我们来看下下面的例子:serverpublicclassBio{publicstaticvoidmain(String〔〕args){try{ServerSocketservernewServerSocket(2999);System。out。println(server监听2999端口等待客户端连接Instant。now()。atOffset(ZoneOffset。ofHours(8))。toInstant());Socketsocketserver。accept();System。out。println(server监听2999端口等待客户端接受数据Instant。now()。atOffset(ZoneOffset。ofHours(8))。toInstant());从套接字中获取输入流InputStreaminputStreamsocket。getInputStream();byte〔〕bytesnewbyte〔1024〕;inputStream。read(bytes);System。out。println(getmessagefromclient:newString(bytes)Instant。now()。atOffset(ZoneOffset。ofHours(8))。toInstant());inputStream。close();socket。close();server。close();}catch(IOExceptione){e。printStackTrace();}}}clientpublicclassClient{publicstaticvoidmain(String〔〕args){try{建立连接System。out。println(客户端准备连接服务器2999端口Instant。now()。atOffset(ZoneOffset。ofHours(8))。toInstant());SocketsocketnewSocket(127。0。0。1,2999);System。out。println(客户端连接服务器2999端口Instant。now()。atOffset(ZoneOffset。ofHours(8))。toInstant());向socket写入数据OutputStreamoutputStreamsocket。getOutputStream();System。out。println(客户端连接服务器开始写入数据Instant。now()。atOffset(ZoneOffset。ofHours(8))。toInstant());socket。getOutputStream()。write(hi,behappy。getBytes(UTF8));System。out。println(客户端连接服务器开始写入完成Instant。now()。atOffset(ZoneOffset。ofHours(8))。toInstant());outputStream。close();socket。close();}catch(IOExceptione){System。out。println(e。getMessage());}}}
  先启动server,然后再启动client(为了让结果比较清晰建议打断点运行),返回结果如下server返回结果:server监听2999端口等待客户端连接20200611T14:35:58。428Zserver监听2999端口等待客户端接受数据20200611T14:36:16。120Zgetmessagefromclient:hi,behappyclient返回结果客户端准备连接服务器2999端口20200611T14:36:02。026Z客户端连接服务器2999端口20200611T14:36:35。664Z客户端连接服务器开始写入数据20200611T14:36:40。984Z客户端连接服务器开始写入完成20200611T14:36:42。969Z
  运行断点的时候会发现,当server执行到server。accept()和inputStream。read()的时候程序会阻塞,让程序等待,这样会影响执行效率。这也就是为什么会有NIO来替代IO。先自己思考解决方案
  如果是让我来解决这个问题,该如何处理呢?
  可以开线程,每一个线程来处理一个client的连接。这样即使阻塞也是只阻塞当前线程。这样即使阻塞也只是阻塞当前线程,而不会对其他线程造成影响。当然这么做就会消耗系统资源,因为线程是有限的,我们不可能无限的开启线程,若客户端一直未连接就需要做超时处理,将线程关闭。JavaNIO是如何来做的?
  这个问题可能需要等到学习完javaNIO之后才可能回答得出来。那么下面我就开始学习JavaNIO。javaNIO简单导读
  参考上面文档地址传统IO是面向流的,而javaNIO则是面向channels和buffers的。数据都是从channel中读取到buffer或者从channel中写入buffer。javaNIO是非阻塞IO,即不会产生上面的问题。线程可以让channel(有的人叫通道)去读取buffer中的数据,这个时候线程可以做其他事情。当数据层从channel读取到buffer的时候线程在继续处理这部分事情。对于写也是一样。JavaNIO还提供了一个selector。selector是一个对象,可以监控多个通道的事件(如:连接打开,数据到达等)。这样可以让单个线程监视多个channeljavaNIO基本概念
  javaNIO主要的核心组件如下:Channels(通道、管道、频道)buffers(数据缓冲区)Selector(选择器,从导读的概念来看感觉有点像监听器)
  当然javaNIO还有一些其他组件,后面我会慢慢进行学习。
  channel和buffer就可以理解潮汐车道俩头的地点。数据可以从频道(channel)中写入缓冲区(buffer)。
  也可以从缓冲区读取到频道中。
  主要实现的管道类型FileChannelDatagramChannelSocketChannelServerSocketChannel
  核心的缓冲区ByteBufferCharBufferDoubleBufferFloatBufferIntBufferLongBufferShortBuffer
  选择器
  选择器的作用就是能让单个线程来处理多线程的事情。要使用选择器,需要注册频道。然后调用它的select()方法。此方法将阻塞,直到为其中一个已注册通道准备好事件为止。方法返回后,线程就可以处理这些事件。(有传入的连接,接收到的数据等等)
  这些类型后续学习中我会进行练习并尽量做详细了解
投诉 评论 转载

林业生态工程发展前瞻性浅析的论文一、林业生态工程的概念林业生态工程是根据生态学、生态学、系统科学与生态工程原理,针对自然资源环境特征和社会经济发展现状所进行的以木本植物为主题,并将相应的植物、动物、微等……矿视界译文以太坊伦敦硬分叉定于8月4日,将对网络产生什么影响以太坊即将进行一系列重大升级,持币者和用户将见证以太坊一步步变得更快、更好用、更便宜,备受瞩目的EIP1559将会使以太坊成为最具竞争力的智能合约平台。在过去三个月中,整……又一灰色产业火了?收入全靠哄,部分从业者月薪可上万自从网络的普及,给一些人带来了别的出路,网络直播带货暴富的人比比皆是,许多人也从网络中获得了一定的流量,网络也带动了很多人拥有就业的岗位,甚至带动了许多的新兴职业,比如说直播间……古典园林设计中美学运用解析论文摘要:要谈古典园林要谈古典园林,第一想到的是中国源远流长的古典园林制造历史,它以丰富的内涵,博大精深的文化底蕴,博得世界的眼球的眼球。中国古典园林设计独具东方特色和魅力,在整个……网络销售管理论文导语:随着信息社会的发展,网络的影响力无处不在,下面就是小编为您收集整理的网络销售管理的论文的相关文章,希望可以帮到您,如果你觉得不错的话可以分享给更多小伙伴哦!互联网的……黑魂故事白龙希斯的求生之道(下)文字大概8000,不想看的可以直接点击这里看视频点击我看视频上一期我们分析出来了,白龙希斯因为自身的无鳞,无法让自己不死,而背叛了自己的族群,选择了以光之王葛温为代表的,……江山欧派携手SpreadJS,用表格技术引领制造业数字化未来建设数字中国已成为国家战略,传统制造业的数字化转型迫在眉睫。我国制造业要想快速突破,产业结构的调整势在必行。智能制造正是利用新一代信息技术对传统制造业生产方式和组织模式的创新,……获评现代产业学院广州日报讯(记者王纳通讯员刘洪伟)近日,教育部网站公示了首批现代产业学院名单,深圳大学腾讯云人工智能学院入选。据悉本次评选在全国共评出50个现代产业学院。据介绍,深圳大学……柴油发电机房及储油间自动灭火系统设置各地对柴油发电机房及储油间的消防设施规定不一。设置在建筑内的柴油发电机房、锅炉房等,可按以下原则选择自动灭火系统:一、对于设置有自动喷水灭火系统的建筑,柴油发电机房……深夜吃瓜,键鼠起家的雷柏科技出慕斯蛋糕了?全糖,0脂,清爽如果蛋糕会打字,你想输入什么?日常生活中的灵光一现,唤醒食物鲜活的本质。雷柏把慕斯的味道装进机械键盘里面,一波酸甜可爱的选手已经抵达。雷柏ralemo新女性系列,希……Android基于MQTT实现消息通知一、写在前面在对接项目中IoT时,发现目前有对MQTT做了接入,这里记录一下,官方的资料比较详细,这里主要从实现细节出发;对具体的需求以及配套的技术方案进行整理,以供参考……javaNio初级学习javaNio学习笔记(一)学习参考文档:http:tutorials。jenkov。comjavanioindex。html什么是javaNiojavaNi……
电脑死机该怎么办?死机是件烦恼的事情小米在印度尼西亚启动地震预警功能试运行华为海思之后的国产之光!诺基亚的芯片供应商!能赢在5G时代吗千元市场除了Redmi,这4款手机也很值得,小米看了直呼内行探索小组合作教学意义论文行业信息工业走向互联网,不可避免的安全之痛大学生自主创业服务平台的构建论文餐饮管理论文(精选4篇)刍议新课程背景下初中语文教改的创新策略论文桥梁选型及景观设计论文网络游戏的利与弊论文OV小米可以使用鸿蒙OS吗?华为是这样回应的
其实他们是相爱的大黄鱼是深海鱼吗,生活在哪里当真爱来敲门。。我行我真上!美国超级硬核玩家亲赴战场体验真人COD科学家揭示做噩梦六大原因写自己的诗一个人很精彩的说说御厨止用羊肉什么意思宋朝每天消耗多少只羊余嘉豪的潜在竞争对手?NCAA头号中锋试训雄鹿老板,没有人需要在工作中流泪参观消防大队女性机器人以假乱真,她能够带来怎样的服务?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形