这里写自定义目录标题
java多线程判断10万以内的素数和
. 直接贴代码
public static boolean isSu(int n){
boolean isSu = true;
if (n <= 1){
return false;
}
for (int i = 2; i <= (int)Math.sqrt((double) n); ++i){
if (n % i == 0){
isSu = false;
}
}
return isSu;
}
@Test
public void multiComputer(){
ExecutorService ex = Executors.newFixedThreadPool(5);
List<Future<Integer>> futures = new ArrayList<>(5);
//分配 10000 5份
int array = 100000;
int start = 1;
int end = 1;
for (int i = 1; i <= 5; ++i){
end = start + (array/5 -1);
futures.add(ex.submit(new Task(start, end)));
System.out.println("start:" + start + ",end" + end);
start = end + 1;
}
int count = 0;
try {
//处理
for (Future<Integer> future : futures) {
//合并操作
count = count + future.get();
}
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
}
}
private static class Task implements Callable<Integer>{
private int start;
private int end;
public Task(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public Integer call() throws Exception {
int count = 0;
for (int i = start;i <= end; ++i){
if (isSu(i)) {
count ++;
}
}
return count;
}
}