首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux中IO多路复用机制

之前的面试有问到主线程在 ActivityThread 里初始化 Looper 后调用了 Looper.loop() 这个死循环为什么不会阻塞主线程,当时回答因为在 Looper.loop() 方法里调用了 MessageQueue.next() 方法,这个 next() 中调用了nativePollOnce() ,这个本地方法最终实现是 android_os_MessageQueue_nativePollOnce ,因为这里的 IO 机制采用 epool ,当它没有消息时会调用 wait() 函数释放 CPU 进入休眠等待,当有消息来临会通过管道写入来通知唤醒。后面百度了一下 epool 函数,然后对比其他 IO 模型做一个笔记,首先说 IO 是什么, IO 就是 InputStream 和 OutputStream 的缩写,输入和输出的意思,传统的我们通过字节流或字符流来操作流,此时是同步阻塞 IO 模型,后面更新的Java NIO 是同步非阻塞 IO 模型

02
领券