如果消息队列中没有消息,消息队列如何知道要阻止多长时间



据我了解,如果MessageQueue中只有带有未来时间戳的messages,则MessageQueue会阻塞Looper的循环,直到该时间到来。但是,如果MessageQueue完全为空并等待新输入,则此机制也有效。在这种情况下,thread如何知道睡多久/什么时候醒来?

线程具有"等待通知"机制。当线程正在等待时,它实际上处于休眠状态。收到通知后,它会唤醒并重新开始工作。

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

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

相关内容

  • 没有找到相关文章

最新更新