import java.util.ArrayList;
import java.util.List;
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;
public class CompletionServiceTest {
public static void main(String[] args) {
testUseFuture2();
}
/**
*
* 功能描述:ExecutorCompletionService的基本使用
*
* @author jiaozhb/15072775
*/
public static void testUseFuture2() {
// 线程结果集
List<String> resultList = new ArrayList<String>();
// 线程数
int numThread = 5;
// 线程池
ExecutorService executor = Executors.newFixedThreadPool(numThread);
// 服务
CompletionService<String> completionService = new ExecutorCompletionService<String>(executor);
// 线程执行
for (int i = 0; i < numThread; i++) {
completionService.submit(new Callable<String>() {
public String call() throws Exception {
return Thread.currentThread().getName() + "执行完任务:" + Math.random();
}
});
}
// 获取线程结果集
for (int i = 0; i < numThread; i++) {
try {
resultList.add(completionService.take().get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
// 关闭线程池
executor.shutdown();
// 输出结果集
for (String s : resultList) {
System.out.println(s);
}
}
}
ExecutorCompletionService的基本使用
最新推荐文章于 2024-01-03 17:25:54 发布