《IO的多路复用机制是什么?》这是一道年薪50W的面试题。可惜99%的人都答不上来。大家好,我是Mic,一名拥有14年经验的Java程序员。今天给大家分享一道网络IO面试题。这个问题的文字答案已经整理成15W字的面试文档了,可以找我拿。看下面大师的回答。Master:IO多路复用机制,核心思想是让单个线程监听多个连接,一旦一个连接就绪,就触发读/写事件。只需通知应用程序获取就绪连接即可进行读写操作。也就是说,在应用程序中,可以用单个线程同时处理多个客户端连接,增加服务器端处理的连接数,同时消耗较少的系统资源。在IO多路复用机制的实现原理中,客户端向服务端请求后,此时客户端正在传输数据,为了防止服务端在读取客户端数据的过程中被阻塞,服务端将请求注册到Selector多路复用器,服务器此时不需要等待,只需要启动一个线程,通过selector.select()轮询多路复用器上就绪的通道。也就是说,如果客户端连接数据传输完成后,select()方法会返回就绪通道,然后进行相关处理。IO多路复用机制的常见实现包括:select、poll、epoll。以上是linux系统提供的IO多路复用机制的实现,其中select和poll都是基于轮询获取就绪连接。而epoll是基于事件驱动的方式获取就绪连接。从性能的角度来看,事件驱动方式优于轮询方式。综上所述,IO多路复用机制是网络通信非常重要的基础。在平时的业务开发中,很少用到,但作为中间件中的一种基本通信模型,是每个高级工程师必须掌握的。大家记得点赞、收藏和关注。版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!
