首页 > 其他 > 详细

ExecutorService测试09

时间:2020-04-01 13:39:56      阅读:44      评论:0      收藏:0      [点我收藏+]

package t1;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class TestThread21 {

public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService es = Executors.newFixedThreadPool(10);
CompletionService<BigDecimal> cs = new ExecutorCompletionService<>(es);
cs.submit(new CalculateE(17));
cs.submit(new CalculateE(170));
Future<BigDecimal> result = cs.take();
System.out.println(result.get());
System.out.println();
result = cs.take();
System.out.println(result.get());
es.shutdown();
}
}

class CalculateE implements Callable<BigDecimal> {
final int lastIter;

public CalculateE(int lastIter) {
this.lastIter = lastIter;
}

@Override
public BigDecimal call() throws Exception {
MathContext mc = new MathContext(100, RoundingMode.HALF_UP);
BigDecimal result = BigDecimal.ZERO;
for (int i = 0; i < lastIter; i++) {
BigDecimal factorial = factorial(new BigDecimal(i));
BigDecimal res = BigDecimal.ONE.divide(factorial, mc);
result = result.add(res);
}
return result;
}

private BigDecimal factorial(BigDecimal n) {
if (n.equals(BigDecimal.ZERO))
return BigDecimal.ONE;
else
return n.multiply(factorial(n.subtract(BigDecimal.ONE)));
}
}

 

结果:

2.71828182845904225905879345032784186223339662493101646540799979953419106858260297413736567175720614877696999928146

2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642746389611628165412481304872986538030830542556283824591346003267514458191156049421052628685648847691963042847034916777068481221266648385500451288419298517722688532167535748956289403478802971332967547449493758336276413160545439416742703538979653736042908836061026031497997938106009452207905725003230587376260

ExecutorService测试09

原文:https://www.cnblogs.com/dengw125792/p/12611441.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!