乐趣区

关于java:Java面试什么是IO的多路复用机制

“什么是 IO 的多路复用机制?”

这是一道年薪 50W 的面试题,很遗憾,99% 的人都答复不进去。

大家好,我是 Mic,一个工作了 14 年的 Java 程序员。

明天,给大家分享一道网络 IO 的面试题。

这道题目的文字答复曾经整顿到了 15W 字的面试文档外面,大家能够 S 我支付。

上面看看高手的答复。

高手:

IO 多路复用机制,核心思想是让单个线程去监督多个连贯,一旦某个连贯就绪,也就是触发了读 / 写事件。

就告诉应用程序,去获取这个就绪的连贯进行读写操作。

也就是在应用程序外面能够应用单个线程同时解决多个客户端连贯,在对系统资源耗费较少的状况下晋升服务端的链接解决数量。

在 IO 多路复用机制的实现原理中,客户端申请到服务端后,此时客户端在传输数据过程中,为了防止 Server 端在 read 客户端数据过程中阻塞,服务端会把该申请注册到 Selector 复路器上,服务端此时不须要期待,只须要启动一个线程,通过 selector.select()阻塞轮询复路器上就绪的 channel 即可,也就是说,如果某个客户端连贯数据传输实现,那么 select()办法会返回就绪的 channel,而后执行相干的解决就能够了。

常见的 IO 多路复用机制的实现形式有:select、poll、epoll。

这些都是 Linux 零碎提供的 IO 复用机制的实现,其中 select 和 poll 是基于轮询的形式去获取就绪连贯。

而 epoll 是基于事件驱动的形式获取就绪连贯。从性能的角度来看,基于事件驱动的形式要优于轮询的形式。

总结

IO 多路复用机制,是十分重要的网络通信根底。

在平时的业务开发中,应用比拟少,然而在中间件外面作为根底通信模型,是每个高级工程师必须要把握的内容。

大家记得点赞、珍藏加关注。

版权申明:本博客所有文章除特地申明外,均采纳 CC BY-NC-SA 4.0 许可协定。转载请注明来自 Mic 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

退出移动版