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

Android 如果消息队列中没有消息,它如何知道要阻止多长时间?,android,multithreading,message-queue,message,android-looper,Android,Multithreading,Message Queue,Message,Android Looper,据我所知,如果在消息队列中只有带有未来时间戳的消息,那么消息队列将阻止循环器的循环,直到时间到达。但是,如果消息队列完全为空并等待新的输入,此机制也可以工作。在这种情况下,线程如何知道睡眠时间/何时醒来?线程具有“等待通知”机制。当线程等待时,它实际上处于休眠状态。一旦接到通知,它就会醒来并重新开始工作 BlockingQueue的实现使轮询线程在没有要服务的项目时等待,并在插入新项目时通知所有睡眠线程。然后,这些线程将唤醒,并可以获取新插入的项目 有关此机制的更多信息,请访问(或通过谷歌搜索)

据我所知,如果在
消息队列
中只有带有未来时间戳的
消息
,那么
消息队列
将阻止
循环器的循环,直到时间到达。但是,如果
消息队列
完全为空并等待新的输入,此机制也可以工作。在这种情况下,
线程如何知道睡眠时间/何时醒来?

线程具有“等待通知”机制。当线程等待时,它实际上处于休眠状态。一旦接到通知,它就会醒来并重新开始工作

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


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

谢谢。我试图遵循源代码,但它以我找不到的本机方法结束。但是如果MessageQueue为空,并且循环器不只是疯狂地循环它的for循环,那么MessageQueue阻塞是正确的吗?