将 Looper 用于生产者-消费者模式有什么好处?

Any benefits of using Looper for Producer-Consumer pattern?

在我的应用程序中,很少有带有 while-on-volatile-boolean 循环和 BlockingQueue 的线程用于它们处理的非常简单的对象消息(流水线架构)。

最近遇到android.os.Looperclass和它的朋友,好像是做同样的工作,但是都放在了API,有没有什么好处(特别是性能)使用它们而不是带有显式队列的手写循环?还是只是某种 "API sugar"?

Looper 只是一个常规 Java 线程,它会等待消息 post 发送给它。 LooperHandler class 和 Message class 一起使用。处理程序 post Looper 线程上的消息。 Looper 线程使一个线程保持活动状态并循环处理由 Handler 编辑的 post 消息。

就性能而言,据我所知不会有任何优势。它只是让线程保持活动状态,并 post 向这些线程发送消息。从 API point-of-view 开始,使用 Handler 可能更容易。您可以创建多个共享同一个 Looper 的处理程序。让他们以 thread-safe 的方式 post 到 Looper。还有方便的计时消息,如 Handler#postDelayed。所以需要担心的代码会更少。

缺点是它们只有 Android API,所以你被限制在那个环境中。