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

最佳答案

线程具有“等待通知”机制。当线程正在等待时,它实际上正在休眠。收到通知后,它将唤醒并恢复工作。

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

有关此机制的更多信息,请参见here(或通过谷歌搜索)。

09-05 10:41