使用并行性在UNIX中生成大量PDF文件

时间:2015-05-12 16:15:06

标签: java unix jasper-reports

所以最终我需要在UNIX服务器上的磁盘上写入大量的PDF(40,000),并且我试图找到一种有效地做到这一点的方法(更快/消耗更少的内存)。

我一直在使用JasperReports创建一个模板,该模板接收报告所需的所有信息作为参数(意味着报告没有到达数据库)。

然后我有一个简单的Java应用程序,它查询数据集并带来数据集,并为每个记录填充.jasper并将PDF写入磁盘。

现在这适用于几百条记录,但我认为它不适用于生产,其中数字可扩展到40.000条记录,并且流程的输出将是相同数量的PDF文件。做一些测试我估计这个过程至少需要3个小时,而且我也开始担心内存消耗。

所以我想知道的是,如果有一种有效的方法可以做到这一点:

  • 我应该在这个过程中使用并行/多线程吗?
  • 有人能指出我这种工作的知识模式/例子吗?

感谢您的时间

1 个答案:

答案 0 :(得分:0)

不幸的是,您不能使用更少的内存并使用多线程来呈现不同的PDF,每个线程都会分配内存来处理其PDF,内存使用量将与线程数呈线性关系。 如果您可以使用多个线程处理相同的PDF(相同数据),这是一个完全不同的故事,但我不认为这很容易做,因为线程需要频繁同步,使多线程毫无意义。

如果他们不需要共享任何信息,实现多线程将是微不足道的,您可以只实现https://wso2is.com:9443/samlsso?SAMLRequest=[base64stuff]接口,创建通过Runnable实现的新线程,并等待它们以{结束{3}}

如果我是你,我会使用Runnable来加载当时的部分数据集,这可能会允许你使用多个线程。