线程池练习:返回两个数相加的结果和乘积的结果

一、求和

package com.oracle.Demo01;

 

import java.util.concurrent.Callable;

 

public class MyCallables implements Callable<Integer> {

    private int num1;

    private int num2;

    public MyCallables(int num1,int num2) {

        this.num1=num1;

        this.num2=num2;

    }

    

    public Integer call() throws Exception {

     

        return num1+num2;

       

    }

 

}
package com.oracle.Demo01;

 

import java.math.BigInteger;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

 

public class Test1 {

    public static void main(String[] args) throws InterruptedException, ExecutionException {

        //

        MyCallables mc1=new MyCallables(100,150);

        MyCallables mc2=new MyCallables(10,15);

        ExecutorService es=Executors.newFixedThreadPool(2);

        Future<Integer> num1=es.submit(mc1);

        Future<Integer> num2=es.submit(mc2);

        int s1=num1.get();

        int  s2=num2.get();

        System.out.println(s1);

        System.out.println(s2);

        es.shutdown();

       

    }

}

 

运行结果:

 

 

 

二、求积:

 

package com.oracle.Demo01;

 

import java.math.BigDecimal;

import java.math.BigInteger;

import java.util.concurrent.Callable;

 

public class MyCallablesr implements Callable<String > {

    private int num;

    public MyCallablesr(int num) {

        this.num=num;

       

    }

   

    public String call() throws Exception {

        String  base="1";//超long的范围

        for(int i=1;i<=num;i++){

            //用BigDecimal转换

            BigDecimal stra=new BigDecimal(base);

            BigDecimal end=new BigDecimal(i);

            BigDecimal re=end.multiply(stra);

            base=re.toString();

           

        }

        return base ;

    }

 

}
package com.oracle.Demo01;

 

import java.math.BigInteger;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

 

public class Test1 {

    public static void main(String[] args) throws InterruptedException, ExecutionException {

       

        //

        MyCallablesr ms1=new  MyCallablesr(100);

        MyCallablesr ms2=new MyCallablesr(200);

        ExecutorService es=Executors.newFixedThreadPool(2);

        Future<String> base1=es.submit(ms1);

        Future<String> base2=es.submit(ms2);

        String s1=base1.get();

        String s2=base2.get();

        System.out.println(s1);

        System.out.println(s2);

        es.shutdown();

       

    }

}

运行结果:

 

猜你喜欢

转载自www.cnblogs.com/l1314/p/12389967.html