据我了解,如果 MessageQueue
中只有带有 future 时间戳的消息
,则 MessageQueue
会阻塞 Looper
的循环直到那个时间到来。但如果 MessageQueue
完全为空并等待新输入,则此机制也有效。在这种情况下,线程
如何知道休眠多长时间/何时醒来?
最佳答案
线程有一个“等待通知”机制。当线程在等待时,它实际上是在休眠。一旦收到通知,它就会醒来并恢复工作。
BlockingQueue 的实现使轮询线程在没有要服务的项目时等待,并在插入新项目时通知所有休眠线程。然后这些线程被唤醒并可以获取新插入的项目。
可以找到有关此机制的更多信息 here (或通过谷歌搜索)。
关于android - 如果里面没有消息,MessageQueue 怎么知道要阻塞多久呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55299628/