在并行模式下乘以 Bigintegers

Multiplying Bigintegers in parallel mode

我想编写一个 android 代码,在并行模式下将 10,000 个数字相乘。 例如将它们分成几组并在 thread..((async task)) 中乘以每组,然后乘以每组的结果。 但是我不知道该怎么做,有人可以帮忙吗?

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

通过使用线程池概念,您可以将给定的 link 用于代码:

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

使用异步任务时,您还可以检查一下:

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

使用并行流。

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