多线程 : 使用 CompletionService 多线程返回结果

来源:互联网 发布:红五图库永久域名 编辑:程序博客网 时间:2024/06/05 09:12
import java.util.Random;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 CompleteServiceTest {public static void main(String[] args) {ExecutorService threadPool = Executors.newFixedThreadPool(3);CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool);for (int i = 0; i < 3; i++) {final int seq = i;completionService.submit(new Callable<Integer>() {@Overridepublic Integer call() throws Exception {Thread.sleep(new Random().nextInt(5000));return seq;}});}for (int i = 0; i < 3; i++) {try {int result = completionService.take().get();System.out.println(result);} catch (InterruptedException | ExecutionException e) {e.printStackTrace();}}}}

1 0
原创粉丝点击