3 가지 Java 메서드를 실행하려고합니다. 그리고 모두 다른 형식의 데이터를 반환합니다 (클래스 형식이라고 함). ExecutorService
을 사용하여이 3 가지 방법을 병렬로 실행할 수있는 방법이 있습니까? 이런 식으로 call()
메서드는 그것을 사용하는 것에 대한 나의 생각을 망칠 수있는 특정한 것을 반환해야합니다.Java : 다른 형식의 데이터를 반환하는 비동기 메서드 호출
달성 방법이 있는지 알려주십시오.
3 가지 Java 메서드를 실행하려고합니다. 그리고 모두 다른 형식의 데이터를 반환합니다 (클래스 형식이라고 함). ExecutorService
을 사용하여이 3 가지 방법을 병렬로 실행할 수있는 방법이 있습니까? 이런 식으로 call()
메서드는 그것을 사용하는 것에 대한 나의 생각을 망칠 수있는 특정한 것을 반환해야합니다.Java : 다른 형식의 데이터를 반환하는 비동기 메서드 호출
달성 방법이 있는지 알려주십시오.
일반적으로 call()
메서드는 특정 내용을 반환하므로 유용합니다. Callables
의 3 가지 유형을 만들 수 있으며 아무런 문제가 없습니다.
Callable<A> c1 =() -> { return getA(); };
Callable<B> c2 =() -> { return getB(); };
Callable<C> c3 =() -> { return getC(); };
Future<A> f1 = executor.submit(c1);
Future<B> f2 = executor.submit(c2);
Future<C> f3 = executor.submit(c3);
실행자는 임의 유형을 반환하도록 설계된 일반 기능 인터페이스 인 호출 가능 태스크를 허용합니다.
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(() -> "Hello");
executorService.submit(() -> new BigDecimal("1.1"));
executorService.submit(() -> new ArrayList());
제출()는 사용자의 호출 가능에 의해 반환 된 데이터와 동일한 제네릭 형식이됩니다 미래, 계산 결과에 대한 일반적인 홀더를 반환합니다.
Future<String> future = executorService.submit(() -> "Hello");
이 결과에 액세스하려면) (얻을 전화 :
String result = future.get();
당신은 당신이 당신의 질문에 지금까지 시도 코드를 표시해야합니다. [ask]를 읽고 [mcve]를 제공하십시오 – Tibrogargan
반환 값에 공통점이 없으면'Object'를 반환 할 수 있습니다. 어쨌든 결과를받는 코드가 무엇을 가지고 있는지 알아 내야합니다. – rghome