UNIX下使用并行生成大量PDF文件

Using parallelism to generate a large number of PDF files in UNIX

所以最终我需要在 UNIX 服务器上的磁盘上写入大量 PDF (40,000),我正在尝试找出一种有效地执行此操作的方法(faster/consuming 更少的内存)。

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

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

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

所以我想知道是否有有效的方法来做到这一点:

感谢您的宝贵时间

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

如果不需要共享任何信息,实现多线程就很简单了,你可以实现Runnable interface, create new thread passing the implementation of Runnable, and wait them to end with Thread.join()

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