请帮助我。我不知道我在做什么。
问题是future.get()的返回值;是不一致的。 结果有时是(有效和有效),(有效和空),(空和有效)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container box1">
<h2 class="header">Boys</h2>
<hr>
<p>Benjamin</p>
<p>David</p>
</div>
<div class="container box2">
<h2 class="header">Girls</h2>
<hr>
<p>Sara</p>
<p>Tania</p>
</div>
打印结果之一:
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();
我是新手。我已经阅读了多个stackoverflow问题,但仍然不知道原因。
编辑:添加了可调用对象的一部分,因为这是一个大方法。 getInvoice()根据设置从数据库组装发票的html部分。然后,HTML将转换为PDF以供下载。
value to process: 2
Workers: 2
Futures.size(): 2
Futures: null
Futures: 32000_1367_20181119182612.pdf
filenames.add(file): 32000_1367_20181119182612.pdf