Skip to content
阅读进度

Handler Looper MessageQueue 分别负责什么? ​

返回 Java 与并发 目录

标准回答 ​

Handler 负责把 Message 或 Runnable 提交到指定线程,并定义处理方式;MessageQueue 按执行时间等规则管理待处理消息;Looper 在所属线程不断取出可执行消息,再交给对应 Handler 分发。线程调用 Looper.prepare 创建相关环境,loop 开始循环。主线程已经由系统建立 Looper,后台线程可以使用 HandlerThread。Handler 不是执行消息的新线程,new Handler(Looper.getMainLooper()) 绑定的是现有主线程,post 的 Runnable 也在主线程运行。

延伸追问 ​

延迟消息是在提交时进入队列,时间到了且线程有机会执行时才被取出,不是到期后才首次进入队列。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。