您好,登錄后才能下訂單哦!
<pre name="code" class="java">package test;
?
import java.util.concurrent.*;
?
public class test {
/*
* sum : the total of prime number.?
* n : the range.?
* nPart,eachPart : divide n into nPart,eachPart is n/nPart.
*/
public static void main(String[] args) {
int i, sum = 0, n = 10000000, nPart = 16, eachPart = n / nPart, LRange = 1, RRange = eachPart;
long begin, end;
Future[] future = new Future[nPart];
ExecutorService threadPool = Executors.newCachedThreadPool();
begin = System.nanoTime();
for (i = 0; i < nPart; i++)
future[i] = threadPool.submit(new MyThread(LRange + i * eachPart,
RRange + i * eachPart));
threadPool.shutdown();
while (!threadPool.isTerminated())
;
try {
for (i = 0; i < 16; i++)
sum += (Integer) future[i].get();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
end = System.nanoTime();
System.out.println((double) (end - begin) / 1000000000);
System.out.println(sum);
}
}
?
class MyThread implements Callable {
int sum = 0, LRange, RRange;// LRange: range left ; RRange : range right.
?
public MyThread(int lRange, int rRange) {
LRange = lRange;
RRange = rRange;
}
?
public Integer call() throws Exception {
int i, j;
for (i = LRange; i <= RRange; i += 2) {
for (j = 2; j * j <= i; j++)
if (i % j == 0)
break;
if (j * j > i)
sum++;
}
return sum;
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。