我正在開發一個Java應用程序,用於計算數字的權力。我想利用我的四核電腦,因爲只有一個核心正在使用這個應用程序。我已經看過關於如何同步線程的不同教程,但我並不真正瞭解它。我的代碼如下:如何將數學工作分解爲工作線程Java
public class Bignum{
public static void main(String[] args){
Random generator = new Random();
long start = System.nanoTime();
Random generator1 = new Random();
for (long i=0; i<9000;i++){
int power = generator1.nextInt (17) + 2;
int power1 = generator1.nextInt (25) + 2;
int power2 = generator1.nextInt (72) + 2;
BigInteger num = BigInteger.valueOf (generator.nextInt (7895) + 1);
BigInteger num1 = BigInteger.valueOf (generator.nextInt (1250) + 1);
BigInteger num2 = BigInteger.valueOf (generator.nextInt (9765) + 1);
BigInteger add = num.pow(power);
BigInteger add1 = num1.pow(power1);
BigInteger add2 = num2.pow(power2);
BigInteger sum = add.add(add1);
}
}
}
因此,舉例來說,我怎麼可能有一個線程做到這一點:
int power = generator1.nextInt (17) + 2;
int power1 = generator1.nextInt (25) + 2;
int power2 = generator1.nextInt (72) + 2;
另一個做到這一點:
BigInteger num = BigInteger.valueOf (generator.nextInt (7895) + 1);
BigInteger num1 = BigInteger.valueOf (generator.nextInt (1250) + 1);
BigInteger num2 = BigInteger.valueOf (generator.nextInt (9765) + 1);
另一個這樣的:
BigInteger add = num.pow(power);
BigInteger add1 = num1.pow(power1);
BigInteger add2 = num2.pow(power2);
而最後一個這樣做:
BigInteger sum = add.add(add1);
我該怎麼做?另外,我怎麼還能重複那9000次?感謝您的幫助。
我認爲最好是在不同的線程中運行每一個,而不是每個步驟。那麼你同步,直到所有完成並添加 –
那麼你基本上不會操作太小。設置線程所花費的時間要比活着的時間長得多。三個線程每個進行3000次迭代都是有意義的。 –
@TonyHopkinson你能告訴我我該怎麼做? – hichris123