java Будущее несовместимое возвращаемое значение get () - PullRequest
0 голосов
/ 19 ноября 2018

Пожалуйста, помогите мне. Я не знаю, что я делаю больше.

Проблема в возвращаемом значении future.get (); противоречиво Иногда результаты (действительные и действительные), (действительные и нулевые), (нулевые и действительные)

ExecutorService executorService = Executors.newFixedThreadPool(
        ConfigParameter.HTML_TO_PDF_CONVERTER_MAX_THREADS.getPropertyValue(20));
Set<Callable<String>> workers = new LinkedHashSet<>();

System.out.println("values to process: " + values.size());
for (String serviceId : values) {
    workers.add(new HtmlInvoiceNMIPdfWorker(dir, customer, serviceId, stmtno,
            html_invoice_id, groupno, htmlconverter_cmd, size));
}

System.out.println("Workers: " + workers.size());

// run threads
List<Future<String>> futures = executorService.invokeAll(workers);
System.out.println("Futures.size(): " + futures.size());

// get worker results
for (Future<String> future : futures) {
    System.out.println("Futures: " + future.get());
    String file = future.get();

    if (!StringUtil.isNullOrEmpty(file)) {
        System.out.println("filenames.add(file): " + file);
        filenames.add(file);
    } else {
        // do nothing
    }

}

executorService.shutdown();

Один из результатов печати:

value to process: 2
Workers: 2
Futures.size(): 2
Futures: null
Futures: 32000_1367_20181119182612.pdf
filenames.add(file): 32000_1367_20181119182612.pdf

Я новичок в потоках. Я прочитал несколько вопросов о стековом потоке и до сих пор не знаю причину.

Редактировать: Добавлена ​​часть вызова, так как это большой метод. getInvoice () собирает HTML-раздел счетов из базы данных на основе настроек. Затем HTML будет преобразован в PDF для загрузки.

String html="<html>";
html += "<head>";
html += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
html += "<style>@font-face {font-family: 'ocr-b_10_btregular'; src: url('assets/font/tt0646m-webfont.woff2') format('woff2'), url('assets/font/tt0646m-webfont.woff') format('woff'); font-weight: normal; font-style: normal;}</style>";
html += "</head>";
html += "<body>";
html += getInvoice(custno, stmtno,nmiServiceId, html_invoice_id, wsReplacePath, groupno);
html += "</body>";
return convertToPDF(html,destination,custno,stmtno,html_invoice_id,groupno,null,cmd);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...