资讯专栏INFORMATION COLUMN

Java IO的一些思考

468122151 / 2031人阅读

摘要:最近面试问的比较多的问题就是这一块了,有些也答出来了,有些答的不好,最近这段时间开始深入了解一些这方面的东西,也想总结一下。

最近面试问的比较多的问题就是IO这一块了,有些也答出来了,有些答的不好,最近这段时间开始深入了解一些这方面的东西,也想总结一下。

前置点
1,用户空间系统空间
Linux系统会把一个进程分为两个空间,用户空间和系统空间,比如我们正常的编码,操作的都是用户空间的,那如果我们需要调用系统功能,比如拷贝系统文件,这种就需要调用系统组件,获取内核服务,完成操作

IO的两个阶段

 IO的执行过程中分为两个阶段,等待就绪,执行拷贝

等待就绪:我们知道,我们执行IO操作的时候,数据可能来自别的应用程序或者网络,如果没有数据,操作系统是会一直等待的,此时,应用程序可能也会一直等待
执行拷贝:将数据拷贝到应用程序工作区

阻塞与非阻塞,同步与异步

先说同步与非同步,最简单就是看是否启动一个线程或者进程来完成IO这件事情,同步IO的时候,系统会停下来等这个做完才能做别的事情,而异步IO就利用多线程的方式,启动一个新的线程去做这件事情,而自己就可以去干别的事情等待通知

再说阻塞与非阻塞吧,这两个其实关注的是程序在等待调用结果的时候的状态,阻塞是指,你在获取这个结果的时候,你会一直挂起,直到等到完整结果之后你才会继续执行,非阻塞是指,在该进程不能获取结果的时候,没有阻塞线程,这个有点绕,有一个通俗的解释,如果是阻塞的,我要获取这个东西,获取过程中,我就失去了CPU,等到结果之后我才会获取CPU,但是如果我是非阻塞,我就继续持有CPU,我还可以一直检查

几种IO模型
目前比较多的就是5种

阻塞IO
最传统的一种IO,即读写会发生阻塞现象的

非阻塞IO
用户发起read的时候,并不会失去CPU,会一直check,如果没有成功,会返回一个error,如果收到成功信号,就会发起read操作,获取完整结果

多路复用IO
这个就是Java NIO的核心了,会有一个线程管理多个socket的状态,检查是否有准备好的,只有发现真正准备好,才会调用cpu执行IO操作,这块是比较重要的

信号驱动IO
用的少,忽略

异步IO
起一个线程去执行吧

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69488.html

相关文章

  • Dubbo Cloud Native 之路实践与思考

    摘要:可简单地认为它是的扩展,负载均衡自然成为不可或缺的特性。是基于开发的服务代理组件,在使用场景中,它与和整合,打造具备服务动态更新和负载均衡能力的服务网关。类似的特性在项目也有体现,它是另一种高性能代理的方案,提供服务发现健康和负载均衡。 摘要: Cloud Native 应用架构随着云技术的发展受到业界特别重视和关注,尤其是 CNCF(Cloud Native Computing Fo...

    niceforbear 评论0 收藏0
  • 通过IO模型带来思考

    摘要:同步信号驱动在快递柜上写上自己的手机号回调函数,当快递送过来的时候直接给我打电话执行回调函数,然后我去取快递。 IO模型 对于IO,我们经常可以听到诸如同步阻塞IO,同步非阻塞IO,异步IO等等,那么什么是异步/同步,什么是阻塞/非阻塞?首先一次IO在UNIX系统中分为两个步骤 1.发起IO请求:用户线程向操作系统内核发起IO请求 2.执行IO操作:当内核准备好数据可以提交给发起IO请...

    NeverSayNever 评论0 收藏0
  • Dubbo Cloud Native 实践与思考

    摘要:可简单地认为它是的扩展,负载均衡自然成为不可或缺的特性。类似的特性在项目也有体现,它是另一种高性能代理的方案,提供服务发现健康和负载均衡。 Dubbo Cloud Native 实践与思考 分享简介 Cloud Native 应用架构随着云技术的发展受到业界特别重视和关注,尤其是 CNCF(Cloud Native Computing Foundation)项目蓬勃发展之际。Dubbo...

    邱勇 评论0 收藏0
  • 一次线上问题排查所引发思考

    摘要:直到有一天你会碰到线上奇奇怪怪的问题,如线程执行一个任务迟迟没有返回,应用假死。正好这次借助之前的一次生产问题来聊聊如何排查和解决问题。本地模拟上文介绍的是线程相关问题,现在来分析下内存的问题。尽可能的减少多线程竞争锁。 showImg(https://segmentfault.com/img/remote/1460000015568421?w=2048&h=1150); 前言 之前或...

    levy9527 评论0 收藏0
  • 跳槽季如何快速全面复习面试题

    摘要:排序算法和集合工具类排序算法和集合工具类。面试官总是问排序算法也不是在难为你,而是在考察你的编程功底。你首先要理解多线程不仅仅是和那么简单,整个并发包下面的工具都是在为多线程服务。 去年的这个时候楼主通过两个月的复习拿到了阿里巴巴的 offer,有一些运气,也有一些心得,借着跳槽季来临特此分享出来。简单梳理一下我的复习思路,同时也希望和大家一起交流讨论,一起学习,如果不对之处欢迎指正一...

    keke 评论0 收藏0

发表评论

0条评论

468122151

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<