利用线程池求和1+2+…+100;
要求:将任务分成10个部分,每个线程单独计算和,将最终的结果合并。
使用callable和future。
HomeWork.java
import java.util.ArrayList; import java.util.concurrent.*; public class HomeWork { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService pool = Executors.newSingleThreadExecutor(); int sum1=0; ArrayList<Integer> list = new ArrayList<>(); for (int i = 1; i < 100; i++) { int tmp=i; if(i%10==1){ Future<Integer> future = pool.submit(new Callable<Integer>() { @Override public Integer call() throws Exception { int sum = 0; for (int j = tmp; j < tmp + 10; j++) { sum += j; } return sum; } }); list.add(future.get()); } } for (Integer num : list) { sum1 += num; } System.out.println(sum1); } }