使用Looper生产者 - 消费者模式的任何好处?

时间:2017-01-12 22:23:25

标签: android producer-consumer android-looper

在我的应用程序中,很少有带有class MyController extends Controller { public function getVars() { return []; } } class BlaController extends MyController { public function doBla() { $vars = $this->getVars(); } } 循环和while-on-volatile-boolean的线程用于非常简单的对象 - 它们处理的消息(流水线架构)。

最近我和朋友一起遇到了BlockingQueue课程,这似乎做了同样的工作,但它们都放在API中,所以使用它们代替手写循环有什么好处(特别是性能)显式队列?或者它只是某种“API糖”?

1 个答案:

答案 0 :(得分:2)

Looper只是一个常规Java线程,等待消息发布到它。 LooperHandler类和Message类一起使用。处理程序在Looper线程上发布消息。 Looper线程使线程保持活动状态并循环通过Handler发布的消息。

性能方面,就我所知,没有任何优势。它只是保持线程活跃并向这些线程发送消息。从API的角度来看,使用Handler可能更容易。您可以创建多个处理程序,它们共享相同的Looper。让它们以线程安全的方式发布到Looper。还有一些方便的时间消息,如Handler#postDelayed。所以担心的代码就少了。

缺点是它们是仅限Android的API,因此您仅限于该环境。