Java并行程序设计——求九位自幂数个数(Runnable接口实现)

【项目说明】:使用Runnable接口实现求九位自幂数个数的Java多线程并行程序

九位自幂数个数,输出结果、并行、串行时间,并计算加速比。

【项目代码】:


/**使用Runnable接口实现求九位自幂数个数的Java多线程并行程序*/
public class And {
    public static void main(String[] args) throws InterruptedException {
        work work1=new work(1);
        work work2=new work(2);
        Thread thread1=new Thread(work1);
        Thread thread2=new Thread(work2);  
        long startTime=System.currentTimeMillis();
        thread1.start();
        thread2.start();
        thread1.join();
        thread2.join();
        long endTime=System.currentTimeMillis();
        System.out.println("并行结果="+(work1.getSum()+work2.getSum()));
        System.out.println("并行时间="+(endTime-startTime));
        long t1=endTime-startTime;
        startTime=System.currentTimeMillis(); 	
        work work=new work(1);
        long sum=work.sum();
        endTime=System.currentTimeMillis();
        System.out.println("串行结果="+sum);
        System.out.println("串行时间="+(endTime-startTime));
        long t2=endTime-startTime;
        System.out.println("加速比="+t2*1.0/t1);
    }
}
class work implements Runnable{
    private  long start;
    private  long sum=0;  
    
    public work(long start) {
        super();
        this.start = start;
    }

    public void run() {
    	long a,b,c,d,e,f,g,h;
    	 for( a=start; a<=9; a+=2)
    	        for( b=0; b<=9; b++)
    	            for(c=0; c<=9; c++)
    	                for(d=0; d<=9; d++)
    	                    for(e=0; e<=9; e++)
    	                        for(f=0; f<=9; f++)
    	                            for(g=0; g<=9; g++)
    	                                for(h=0; h<=9; h++)
    	                                    if(a*10000000+b*1000000+c*100000+d*10000+e*1000+f*100+g*10+h==a*a*a*a*a*a*a*a+b*b*b*b*b*b*b*b+c*c*c*c*c*c*c*c+d*d*d*d*d*d*d*d+e*e*e*e*e*e*e*e+f*f*f*f*f*f*f*f+g*g*g*g*g*g*g*g+h*h*h*h*h*h*h*h)
    	                                        sum++;
    }
	
    public long sum(){
    long a,b,c,d,e,f,g,h;
   	 for( a=start; a<=9; a++)
   	        for( b=0; b<=9; b++)
   	            for(c=0; c<=9; c++)
   	                for(d=0; d<=9; d++)
   	                    for(e=0; e<=9; e++)
   	                        for(f=0; f<=9; f++)
   	                            for(g=0; g<=9; g++)
   	                                for(h=0; h<=9; h++)
   	                                    if(a*10000000+b*1000000+c*100000+d*10000+e*1000+f*100+g*10+h==a*a*a*a*a*a*a*a+b*b*b*b*b*b*b*b+c*c*c*c*c*c*c*c+d*d*d*d*d*d*d*d+e*e*e*e*e*e*e*e+f*f*f*f*f*f*f*f+g*g*g*g*g*g*g*g+h*h*h*h*h*h*h*h)
   	                                        sum++;
        return sum;
    }

    public long getSum() {
        return sum;
    }
}

【运行截图】:



猜你喜欢

转载自blog.csdn.net/mcp3128/article/details/80425706
今日推荐