如何将任务分配给每个处理器核心?

时间:2015-01-27 15:01:07

标签: java android encryption multicore

我在四核android手机上执行基本加密/解密。

目前,每个文件的加密时间为1.45秒。对于大约5分钟的200个文件 如果我使用所有4个核心,我可以提高4倍的性能。

for(i=0;i<200;i++)
{
     encrypt(file[i]);
}

将是一个简化的伪代码,我现在正在使用。

如何在android java编程中的所有4个处理器内核上并行调用加密功能?

2 个答案:

答案 0 :(得分:3)

使用 ExecutorService 并行执行任务:http://developer.android.com/reference/java/util/concurrent/ExecutorService.html

这样的事情:

    ExecutorService executorService = Executors.newFixedThreadPool(CORE_COUNT);
    for (int i = 0; i < 200; i++) {
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                encrypt(file[i]);
            }
        });
    }

    // Waiting for completion
    while (!executorService.awaitTermination(100L, TimeUnit.MILLISECONDS);

答案 1 :(得分:1)

一种选择是使用ExecutorServicehttp://developer.android.com/reference/java/util/concurrent/ExecutorService.html)。在循环中,将每个调用包装在Runnable或Callable中加密,并在列表中收集Future。然后迭代期货,等到它们全部完成并处理结果。