<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();
}
}
}