ExecutorService InvokeAll用于混合数据类型

我是新手,尝试使用ExecutorService调用具有不同返回类型的多个线程。在继续之前,我需要等待所有线程完成。我可以使用同质返回类型来做到这一点,但想要使用异构返回类型。

下面是我的示例代码片段:

@RestController
public class ApplicationController {

@GetMapping
public String HelloWorld() {
    System.out.println("Inside Thread main");

    Callable<String> callabletask = () -> {
        return invokeThread1();
    };

    Callable<String> callabletask2 = () -> {
        return invokeThread2();
    };

    List<Callable<String>> tasks = new ArrayList<>();

    System.out.println("Inside Thread main - 1 ");

    StringBuilder result = new StringBuilder();

    ExecutorService executor = Executors.newFixedThreadPool(10);
    System.out.println("Inside Thread main - 2");

    tasks.add(callabletask);
    tasks.add(callabletask2);


    try {
        List<Future<String>> futures = executor.invokeAll(tasks);

        for (Future<String> f : futures) {
            result.append(f.get());
            System.out.println(" result ::: " + result);
        }


    } catch (InterruptedException | ExecutionException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.out.println("Inside Thread main - 5 " + result.toString());
    return result.toString();
}

private String invokeThread1() {

    final String uri = "http://localhost:8082";

    return invokeService(uri).getBody();
}

private String invokeThread2() {

    final String uri = "http://localhost:8083";

    return invokeService(uri).getBody();
}

private ResponseEntity<String> invokeService(final String uri) {
    RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setaccept(Arrays.asList(MediaType.APPLICATION_JSON));
    HttpEntity<String> entity = new HttpEntity<String>("parameters",headers);

    ResponseEntity<String> result = restTemplate.exchange(uri,HttpMethod.GET,entity,String.class);
    return result;
}

}

想象一下, invokeThread1的返回类型为String ,而 invokeThread2的返回类型为Integer 。请帮助我进行必要的更改。

yx118226 回答:ExecutorService InvokeAll用于混合数据类型

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3114980.html

大家都在问