<dependency> <groupId>org.jboss.spec.javax.concurrency</groupId> <artifactId>jboss-concurrency-api_1.0_spec</artifactId> <version>1.0.0.Final</version> </dependency> import javax.enterprise.concurrent.ManagedExecutorService; import javax.enterprise.concurrent.ManagedTask; import javax.enterprise.concurrent.ManagedTaskListener; import java.util.concurrent.Callable; public class Calculator implements Callable<Integer> { private int start; private int end; public Calculator(int start, int end) { this.start = start; this.end = end; } @Override public Integer call() throws Exception { int sum = 0; for (int i = start; i <= end; i++) { sum += i; } return sum; } } import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) { try { ManagedExecutorService executorService = (ManagedExecutorService) new InitialContext().lookup("java:comp/DefaultManagedExecutorService"); List<Future<Integer>> futureList = new ArrayList<>(); int batchSize = 10; for (int i = 1; i <= 100; i += batchSize) { Calculator calculator = new Calculator(i, i + batchSize - 1); Future<Integer> future = executorService.submit(calculator); futureList.add(future); } int sum = 0; for (Future<Integer> future : futureList) { sum += future.get(); } executorService.shutdown(); executorService.awaitTermination(5, TimeUnit.SECONDS); e.printStackTrace(); } } }


上一篇:
下一篇:
切换中文