2017-07-26 63 views
-4

我想編寫一個在並行模式下乘以10,000個數字的android代碼。 例如,將它們分成組並將每個組乘以線程..((異步任務)),然後乘以每個組的結果。 但我不知道該怎麼做,任何人都可以幫忙嗎?以並行模式乘以大整數

回答

0

使用並行流。

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