一、求和
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(); } }
运行结果: