public class And extends Thread{
private long start;
private long end;
private long sum=0;
public And(long start,long end){
super();
this.start=start;
this.end=end;
}
public void run(){
for(long i=start;i<=end;i+=2)
sum+=i;
}
public long sum()
{
for(long i=start;i<=end;i++)
sum+=i;
return sum;
}
public long getSum(){
return sum;
}
}
public class aa {
public static void main(String[] args) throws InterruptedException {
And thread1=new And(1,1000000000);
And thread2=new And(2,1000000000);
long startTime=System.currentTimeMillis();
thread1.start();
thread2.start();
thread1.join();
thread2.join();
long endTime=System.currentTimeMillis();
System.out.println("并行结果="+(thread1.getSum()+thread2.getSum()));
System.out.println("并行时间="+(endTime-startTime));
startTime=System.currentTimeMillis();
And serial=new And(1,1000000000);
long sum=serial.sum();
endTime=System.currentTimeMillis();
System.out.println("串行结果="+sum);
System.out.println("串行时间="+(endTime-startTime));
}
}
运行结果:
并行结果=500000000500000000
并行时间=1372
串行结果=500000000500000000
串行时间=2731
总结:
相对加速比为:
2731/1372=1.99