在我的应用程序中,很少有带有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糖”?
答案 0 :(得分:2)
Looper
只是一个常规Java线程,等待消息发布到它。 Looper
与Handler
类和Message
类一起使用。处理程序在Looper线程上发布消息。 Looper线程使线程保持活动状态并循环通过Handler发布的消息。
性能方面,就我所知,没有任何优势。它只是保持线程活跃并向这些线程发送消息。从API的角度来看,使用Handler可能更容易。您可以创建多个处理程序,它们共享相同的Looper。让它们以线程安全的方式发布到Looper。还有一些方便的时间消息,如Handler#postDelayed
。所以担心的代码就少了。
缺点是它们是仅限Android的API,因此您仅限于该环境。