单线程:
//tally:质数数量\耗时----9593\1200///////78499\86722
private static void countPrimes(int num) {
int tally=0;
for(int i=1;i<=num;i++){
if(isP(i)){
tally++;
//System.out.println(i);
}
}
System.out.println("tally:"+tally);
}
private static boolean isP(int num) {
for(int i=2;i<num;i++){
if(num%i==0)
return false;
}
return true;
}
多线程要快很多,使用lambda方式更容易实现多线程。
同时使用lambda表达式另一个好处是更容易实现SOLID中单一功能原则。每一个方法或类实现单一的功能。逻辑显得更加清晰。
//lambda 78499\23548
private static long countPrimes1(int num) {
return IntStream.range(1,num)
//去掉parallel()就是单线程运行。
.parallel()
.filter(n->isP(n))
.count();
}