我正在制作一个java程序,它比较计算两个给定数字之间的素数总数所需的时间。我必须计算顺序以及线程需要多少时间。
例如,我必须检查顺序计算需要多少时间:
PrimeNumbers pn = new PrimeNumbers (1,1000);
并将其与计算相同的事物但将其划分为多个线程所需的时间进行比较:
PrimeThread p1 = new PrimeThread (1, 200);
PrimeThread p2 = new PrimeThread (201, 400);
PrimeThread p3 = new PrimeThread (401, 600);
PrimeThread p4 = new PrimeThread (601, 800);
PrimeThread p5 = new PrimeThread (801, 1000);
我必须使用 System.currentTimeMillis() 来计算时间。线程应该能够更快地计算同样的事情,但实际上更慢。到目前为止我有这个代码:
PrimeNumbers pn = new PrimeNumbers(1,1000);
long startTimeSeq = System.currentTimeMillis();
int totalNumbersSeq = pn.calculatePrimeNumbers();
long finishTimeSeq = System.currentTimeMillis();
float totalTimeSeq = finishTimeSeq - startTimeSeq;
PrimeThread p1 = new PrimeThread (1, 200);
PrimeThread p2 = new PrimeThread (201, 400);
PrimeThread p3 = new PrimeThread (401, 600);
PrimeThread p4 = new PrimeThread (601, 800);
PrimeThread p5 = new PrimeThread (801, 1000);
long startTimeThread = System.currentTimeMillis();
p1.start();
p2.start();
p3.start();
p4.start();
p5.start();
try {
p1.join();
p2.join();
p3.join();
p4.join();p5.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
long finishTimeThread = System.currentTimeMillis();
float totalTimeThread = finishTimeThread - startTimeThread;
int totalNumbersThread = p1.getNumPrimers() + p2.getNumPrimers() + p3.getNumPrimers() + p4.getNumPrimers() + p5.getNumPrimers();
System.out.println("Total prime numbers sequentially: " + numPrimers);
System.out.println("Total time: " + totalTimeSeq);
System.out.println("Total prime numbers with threads: " + resultatFinal);
System.out.println("Total time: " + totalTimeThread);
打印的结果是:
Total prime numbers sequentially: 169
Total time: 1.0
Total prime numbers with threads: 169
Total time: 3.0
如果我的内容很混乱,我很抱歉,这是我第一次在这里发帖,而且我是编程新手。太感谢了。
郎朗坤
相关分类