单线程池 - ExecutorService或Handler + HandlerThread

时间:2014-01-16 08:02:32

标签: android multithreading

传统上,当我需要单个线程池时,我将使用

ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(...

但是,在查看Weather List Widget时,我意识到我们可以使用Handler + HandlerThread来实现类似的目标

HandlerThread sWorkerThread = new HandlerThread("WeatherWidgetProvider-worker");
sWorkerThread.start();
Handler sWorkerQueue = new Handler(sWorkerThread.getLooper());
sWorkerQueue.post(...

我想知道,我应该考虑什么,为了在他们中间做出正确的选择?

1 个答案:

答案 0 :(得分:6)

HandlerThread比ExecutorService简单。因此它将使用更少的资源并更快地工作。所以如果你有很多小消息通过Handler处理它们。

但执行官不仅仅是一个班级。执行者是一个标准。它是一个具有许多功能的框架,每个java程序员都可以理解用执行程序编写的代码。许多库可以与执行程序一起使用。它很灵活,您可以轻松更改执行程序类型或执行程序队列。因此,如果您有一个复杂的处理任务,并且您不知道它是如何使用执行程序完全实现的。