HandlerThread和Executors.newFixedThreadPool(1)比较

时间:2018-10-14 15:55:44

标签: android concurrency executorservice android-handlerthread

我在两个类中都进行了测试,但是HandlerThread类中存在滞后。我将许多任务发送到队列,并且Executors.newFixedThreadPool(1)的工作效果更好。 为什么?

这项工作正常(如果我发布20-30个任务):

private static ExecutorService executorService= Executors.newFixedThreadPool(1);

public static void logd(String str) {
    executorService.submit(WriteLogToFile.getTaskFor(str));
}

这会导致UI出现滞后(如果我发布20-30任务, 我添加的任务越多,UI中的滞后时间就越长(冻结)):

private static HandlerThread handlerThread= new HandlerThread("BLABLA");
private static Handler handler;

static{
    handlerThread.start();
    handler=new Handler(handlerThread.getLooper())
}

public static void logd(String str) {
    handler.post(WriteLogToFile.getTaskFor(str));
}

0 个答案:

没有答案