线城池写法

78 阅读1分钟
public static ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(5, 50, 300, TimeUnit.SECONDS, new ArrayBlockingQueue<>(50));

```
@PostMapping("/pool/test")
@ApiOperation("线程池测试")
public Result poolTest(@RequestBody List<String> requests) {
    List<Long> re = new ArrayList<>();
    List<Future<Long>> a = new ArrayList<>();
    for (String request : requests) {
        Future<Long> submit = poolExecutor.submit(new Callable<Long>() {
            @Override
            public Long call() throws Exception {
                System.out.println("线程池测试" + request);
                return System.currentTimeMillis();
            }
        });
        a.add(submit);
    }
    a.stream().forEach(x -> {
        try {
            Long aLong = x.get();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        } catch (ExecutionException e) {
            throw new RuntimeException(e);
        }
    });
    return Result.success(re);
}

```



// 业务规则

/*        Supplier<KeyValue<Boolean>> supplier = new Supplier<KeyValue<Boolean>>() {
            @Override
            public KeyValue<Boolean> get() {
                boolean re =  planeOrderFactorService.conditionFlightNoA(request, result);
                return new KeyValue("conditionFlightNoA", re);
            }
        };*/

/*        Map<String, Boolean> collect = Stream.<Supplier<KeyValue<Boolean>>>of(
                () -> new KeyValue<>("conditionAirwaysFk", planeOrderFactorService.conditionAirwaysFk(request))
                , () -> new KeyValue<>("conditionFlightNoA", planeOrderFactorService.conditionFlightNoA(request, result))
                , () -> new KeyValue<>("conditionFlightNoB", planeOrderFactorService.conditionFlightNoB(request, result))
                , () -> new KeyValue<>("conditionFlightNoC", planeOrderFactorService.conditionFlightNoB(request, result))
        ).parallel().map(Supplier::get).collect(Collectors.toMap(a -> a.getKey(), a -> a.getValue()));*/


        Supplier<KeyValue<Boolean>> supplierAirwaysFk = () -> new KeyValue<>("conditionAirwaysFk", planeOrderFactorService.conditionAirwaysFk(request));
        Supplier<KeyValue<Boolean>> supplierFlightNoA = () -> new KeyValue<>("conditionFlightNoA", planeOrderFactorService.conditionFlightNoA(request, result));
        Supplier<KeyValue<Boolean>> supplierFlightNoB = () -> new KeyValue<>("conditionFlightNoB", planeOrderFactorService.conditionFlightNoB(request, result));
        Supplier<KeyValue<Boolean>> supplierFlightNoC = () -> new KeyValue<>("conditionFlightNoC", planeOrderFactorService.conditionFlightNoC(request));
        List<Supplier<KeyValue<Boolean>>> suppliers = new ArrayList<>();
        suppliers.add(supplierAirwaysFk);
        suppliers.add(supplierFlightNoA);
        suppliers.add(supplierFlightNoB);
        suppliers.add(supplierFlightNoC);

        Map<String, Boolean> factorRe = suppliers.stream().parallel().map(Supplier::get).collect(Collectors.toMap(a -> a.getKey(), a -> a.getValue()));
```
```