|
|
|
|
|
|
N***m 发帖数: 4460 | 1 一小段code。我在学java concurrent,不知道多核电脑上运行会快多少?
是不是和核的数目基本线性的,如果thread_num % #cpu_core==0?
多核会不会自己优化?
==================================================
这段程序寻找给定范围内素数的个数。
[Main.java]
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class Main {
public static void main(String[] args) {
List> tasks = new ArrayList
Integer>>();
int thread_num = 1; // number of thread
int num_per_thread = 2000000; // number to be processed in
each thread
for(int i=0;i
Callable call = new FindPrime(i*num_per_thread +1,(i
+1)*num_per_thread );
FutureTask task = new FutureTask(
call);
tasks.add(task);
new Thread(task).start();
}
int count = 0;
try {
for(FutureTask t:tasks)
count += t.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println("number of prime found:"+count);
}
}
=======================================
[FindPrime.java]
import java.util.concurrent.Callable;
public class FindPrime implements Callable {
private int start,end,count;
public FindPrime(int start,int end) {
this.start = start;
this.end = end;
count = 0;
}
@Override
public Integer call() throws Exception {
for(int n=start;n<=end;n++) {
if(isPrime(n))
{
//System.out.print(n+" ");
count++;
}
}
//System.out.println();
return count;
}
public boolean isPrime(int k) {
if(k==1)
return false;
if(k==2)
return true;
for(int i=2;i<=Math.sqrt(k);i++) {
if(k%i==0)
return false;
}
return true;
}//
} | e********g 发帖数: 2524 | 2 你那个count++会不会出问题啊?
【在 N***m 的大作中提到】 : 一小段code。我在学java concurrent,不知道多核电脑上运行会快多少? : 是不是和核的数目基本线性的,如果thread_num % #cpu_core==0? : 多核会不会自己优化? : ================================================== : 这段程序寻找给定范围内素数的个数。 : [Main.java] : import java.util.ArrayList; : import java.util.List; : import java.util.concurrent.Callable; : import java.util.concurrent.ExecutionException;
| N***m 发帖数: 4460 | 3 why?
我运行了几个参数,没发现什么问题。
【在 e********g 的大作中提到】 : 你那个count++会不会出问题啊?
|
|
|
|
|
|