据我了解,如果messages
中只有MessageQueue
带有时间戳,则MessageQueue
会阻塞Looper
的循环,直到该时间到来为止。但是,如果MessageQueue
完全为空并等待新输入,则此机制也可以使用。 thread
如何知道在这种情况下要睡多长时间/何时醒?
最佳答案
线程具有“等待通知”机制。当线程正在等待时,它实际上正在休眠。收到通知后,它将唤醒并恢复工作。
BlockingQueue的实现使轮询线程在没有可服务项目的情况下等待,并在插入新项目时通知所有休眠线程。然后,这些线程将唤醒并可以接收新插入的项目。
有关此机制的更多信息,请参见here(或通过谷歌搜索)。