배송 물품 목록이 있으며 각 발송물에 대한 정보를 얻기 위해 API 호출을해야합니다. 이 네트워크 호출을 병렬로 만들려고합니다. 그래서 자바 8 parallelStream()
사용하여 다음과 같이 정의 ForkJoinPool
에 제출하고 있습니다 : 내 ForkJoinPool
에서 스레드의 수를 최적화 할맞춤 ForkJoinPool에 제출 된 요청이 즉시 처리되는지 확인합니다.
- , 그래서 I :
@Autowired ForkJoinPool forkJoinPool; ... public void someMethod(){ ... List<MyObj> myObjList = null; try { myObjList = forkJoinPool.submit(() -> shipmentList.parallelStream() .map(shipment -> getShipmentInfo(shipment)) .collect(Collectors.toList()) ).get(); } catch (Exception e){ ... } } public MyObj getShipmentInfo(Shipment shipment) { // Make network call and return MyObj }
나는이 개 질문이 어떻게 수행하고 있는지 확인해야합니다. 요청이 처리되지 않고 풀에서 즉시 처리되는 경우 기록 할 수 있습니까?
- 내 시스템에 많은 트래픽이 발생합니다. 따라서
autowired ForkJoinPool
에submit()
과get()
을 입력하면 다른 요청으로 발송물을 기다려야합니까? 제가 말하고자하는 것은 2 가지 요청을 동시에 처리 할 수 있습니다. Request1에는 3 개의 발송물이 있고 Request2에는 5 개의 발송물이 있습니다. 그래서 위의 코드는 8 개의 선적이 완료 될 때까지 기다릴 것입니까?
감사합니다.