1 package com.-.it.regioc.task;
2
3 import com.alibaba.fastjson.JSONObject;
4 import lombok.extern.slf4j.Slf4j;
5 import java.util.ArrayList;
6 import java.util.List;
7 import java.util.concurrent.ArrayBlockingQueue;
8 import java.util.concurrent.Future;
9 import java.util.concurrent.ThreadPoolExecutor;
10 import java.util.concurrent.TimeUnit;
11
12 @Slf4j
13 public class ProbeQueryExecutor {
14 private static final ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 12, 1, TimeUnit.MINUTES, new ArrayBlockingQueue<>(150));
15
16 /**
17 * 提交任务
18 */
19 public static List<JSONObject> submitTask(List<ProbeQueryTask> tasks) {
20 ArrayList<Future<JSONObject>> futures = new ArrayList<>();
21 for (ProbeQueryTask task : tasks) {
22 Future<JSONObject> future = executor.submit(task);
23 futures.add(future);
24 }
25 List<JSONObject> results = new ArrayList<>();
26 for (int i = 0; i < futures.size(); i++) {
27 try {
28 JSONObject result = futures.get(i).get();
29 results.add(result);
30 } catch (Exception e) {
31 log.error("线程池查询探针异常:{}", tasks.get(i).getParam().toString(), e);
32 }
33 }
34 return results;
35 }
36 }