android - 如果里面没有消息,MessageQueue 怎么知道要阻塞多久呢?

标签 android multithreading message-queue message android-looper

据我了解,如果 MessageQueue 中只有带有 future 时间戳的消息,则 MessageQueue 会阻塞 Looper 的循环直到那个时间到来。但如果 MessageQueue 完全为空并等待新输入,则此机制也有效。在这种情况下,线程 如何知道休眠多长时间/何时醒来?

最佳答案

线程有一个“等待通知”机制。当线程在等待时,它实际上是在休眠。一旦收到通知,它就会醒来并恢复工作。

BlockingQueue 的实现使轮询线程在没有要服务的项目时等待,并在插入新项目时通知所有休眠线程。然后这些线程被唤醒并可以获取新插入的项目。

可以找到有关此机制的更多信息 here (或通过谷歌搜索)。

关于android - 如果里面没有消息,MessageQueue 怎么知道要阻塞多久呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55299628/

相关文章:

c# - 多线程TCP

java - SQSListener 不消耗队列中的消息

ruby-on-rails - IAP 后端最佳实践

检查IPC消息队列是否已经存在而不创建它

android - 如何开始 Activity 语言和输入

java - 如何将文件写入 Android SD 卡并在 PC 上可见

android - eclipse "offline"无法识别手机?

java - onActivityResult byte[] data 不管图片多大都返回null

java - java多线程中的wait函数

python - 如何在不同的Qt线程中调用GUI元素?