Java 这是使用Callable的正确方法吗?

Java 这是使用Callable的正确方法吗?,java,rest,executorservice,callable,Java,Rest,Executorservice,Callable,我有一个大的文本文件要处理。方法parse()尝试使用多个线程向restful服务发送请求以获取结果。对于每个inputInfo,它应该在处理后返回一个ExtractedInfo private ExecutorService executorService = Executors.newFixedThreadPool(10); public ExtractedInfo parse(InputInfo inputInfo) { ExtractedInfo extractedInfo

我有一个大的文本文件要处理。方法parse()尝试使用多个线程向restful服务发送请求以获取结果。对于每个inputInfo,它应该在处理后返回一个ExtractedInfo

private ExecutorService executorService = Executors.newFixedThreadPool(10);


public ExtractedInfo parse(InputInfo inputInfo) {
    ExtractedInfo extractedInfo = new ExtractedInfo();
    String inputText = inputInfo.getText();

    Callable<String> parseTask = () -> this.executeTask(inputText);
    Future<String> parseService = executorService.submit(parseTask);

    String result = null;
    try {

        result = parseService.get(Parameters.getParserTimeLimit(), TimeUnit.MILLISECONDS);

    } catch (ExecutionException | InterruptedException e) {
        LOGGER.warn("ExecutionException | InterruptedException");
        e.printStackTrace();
    } catch (TimeoutException te) {
        parseService.cancel(true);
        LOGGER.warn("NLP parser time out for {} {} {}", sku, inputText, msgId);
    }

    if (result != null) {
        extractedInfo.setResult(result);
    }

    return extractedInfo;
}

这样做对吗

不是真的。“如果你马上打电话给get,你就坐在那里挡住它。”纳森想知道如何修改它才能工作?
 private String executeTask(String inputText) {
    String jsonOutput = null;
    String urlStr = null;
    try {
        String encodedInputText = URLEncoder.encode("\"" + inputText + "\"", "UTF-8");
        urlStr = parserServerSelection();
        URL url = new URL(urlStr + encodedInputText);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        jsonOutput = in.readLine();
        in.close();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {

        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }
    return jsonOutput;
}