public class And implements Runnable{
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 and1=new And(1,1000000000); //接口类声明
And and2=new And(2,1000000000);
Thread thread1=new Thread(and1); //使用Thread类的构造函数:public Thread(Runnable target)
Thread thread2=new Thread(and2);
long startTime=System.currentTimeMillis();
thread1.start();
thread2.start();
thread1.join();
thread2.join();
long endTime=System.currentTimeMillis();
System.out.println("并行结果="+(and1.getSum()+and2.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
并行时间=1373
串行结果=500000000500000000
串行时间=2731
总结:
实验加速比为2731/1373=1.989