package com.executorservice;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class ExecutorServiceTest {
private class QueryTask implements Callable<String> {
private int i;
public QueryTask(int i) {
super();
this.i = i;
}
public String call() throws Exception {
System.out.println(i);
return "fsfs";
}
}
public void run(){
ExecutorService queryService = Executors.newFixedThreadPool(5);
int i = 0;
List<Callable<String>> l = new ArrayList<Callable<String>>();
l.add((Callable<String>)new QueryTask(i++));
l.add((Callable<String>)new QueryTask(i++));
l.add((Callable<String>)new QueryTask(i++));
l.add((Callable<String>)new QueryTask(i++));
l.add((Callable<String>)new QueryTask(i++));
try {
List<Future<String>> futures = queryService.invokeAll(l);
for(Future future : futures){
System.out.println();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
ExecutorServiceTest executorServiceTest = new ExecutorServiceTest();
executorServiceTest.run();
}
}
本文通过一个具体示例展示了如何使用 Java 中的 ExecutorService 来管理线程池,包括创建固定大小的线程池、定义 Callable 任务、提交任务并获取结果。
1237

被折叠的 条评论
为什么被折叠?



