以并行模式乘以Bigintegers

时间:2017-07-26 01:31:28

标签: java android biginteger

我想写一个android代码,它在并行模式下乘以10,000个数字。 例如,将它们分成组并将每个组乘以线程..((异步任务))然后乘以每个组的结果。 但我不知道怎么做,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

线程池可以运行任务的多个并行实例,因此您应该确保代码是线程安全的。包含可由同步块中的多个线程访问的变量。这种方法将阻止一个线程读取变量而另一个线程正在写入变量。通常情况下,这种情况会出现在静态变量中,但它也会出现在只实例化一次的任何对象中。

通过使用线程池概念,您可以使用给定的代码链接:

https://developer.android.com/training/multiple-threads/create-threadpool.html#ClassStructure

使用异步任务时,您也可以检查:

https://software.intel.com/en-us/articles/developing-android-applications-using-parallel-programming

答案 1 :(得分:0)

使用并行流。

List<BigInteger> integers = new ArrayList<>();
// fill data
BigInteger result = integers.parallelStream()
    .reduce(BigInteger.ONE, (a, e) -> a.multiply(e));
System.out.println(result);