在我的应用程序中,很少有带有while-on-volatile-boolean
循环和BlockingQueue
s 的线程用于它们处理的非常简单的对象消息(流水线架构)。
最近我遇到android.os.Looper
了和它的朋友一起上课,这似乎做同样的工作,但是它们被放置在 API 中,那么使用它们而不是带有显式队列的手写循环有什么好处(尤其是性能)?还是只是某种“API 糖”?
在我的应用程序中,很少有带有while-on-volatile-boolean
循环和BlockingQueue
s 的线程用于它们处理的非常简单的对象消息(流水线架构)。
最近我遇到android.os.Looper
了和它的朋友一起上课,这似乎做同样的工作,但是它们被放置在 API 中,那么使用它们而不是带有显式队列的手写循环有什么好处(尤其是性能)?还是只是某种“API 糖”?
ALooper
只是一个普通的 Java 线程,它等待消息发布到它。Looper
与Handler
类和Message
类一起使用。处理程序在 Looper 线程上发布消息。Looper 线程保持线程处于活动状态并循环通过 Handler 发布的消息。
在性能方面,据我所知,不会有任何优势。它只是保持线程活跃并向这些线程发布消息。从 API 的角度来看,使用 Handler 可能更容易。您可以创建多个共享同一个 Looper 的 Handler。让他们以线程安全的方式发布到 Looper。还有方便的计时消息,例如Handler#postDelayed
. 因此,只需担心更少的代码。
缺点是它们是仅限 Android 的 API,因此您仅限于该环境。