【问题标题】:Ghost4J native library to convert pdf to imageGhost4J 本机库将 pdf 转换为图像
【发布时间】:2013-07-14 11:50:49
【问题描述】:

我正在使用 Ghost4J 本机库 32 位和 64 位 dll 文件将我的 PDF 转换为图像。我需要将它与 ThreadPoolExecutor (即多线程)一起使用,但由于它是原生的,它经常让我的 JBoss 崩溃。

在我同步使用这个库后,线程表现不佳。即有 4 个线程和 8 个线程,在性能上没有区别。

有什么安全的方法吗?

【问题讨论】:

    标签: java image pdf ghostscript native-code


    【解决方案1】:

    你有没有尝试过 ghost4j 推荐的多线程:

    多线程

    确保 Ghostscript 是线程安全的是第一步。但是如果 Ghost4J 被用于多线程/多用户环境(例如在 webapp 中)呢?

    如果使用 Ghost4J 编写文档转换 webapp,如果用户必须等待先前的用户请求完成,那么使用单个 Ghostscript 解释器可能是一个真正的问题。

    为了克服这个限制,Ghost4J 在其高级 API 组件上提供了多线程支持(从 0.4.0 版开始)。

    这怎么可能? : 组件处理发生在不同的 JVM 中。

    主 JVM 中的组件能够启动其他 JVM(在其他系统进程中运行)并使用 cajo 库(嵌入在 ghost4j JAR 文件中)控制它们。

    为了确保可以从主 JVM 创建从属 JVM,请检查是否可以使用 java 命令从命令行启动 Java。

    可以通过在组件上设置 maxProcessCount 属性(如果可用)来控制多线程行为:

    • 当 = 0:禁用多线程。组件必须等待 Ghostscript 解释器释放后才能开始处理。

    • 当 > 0:启用多线程。组件处理不会在主 JVM 中进行,而是在从属 JVM 中进行。赋予 maxProcessCount 的值表示该组件可以同时运行多少个从属 JVM。当从属 JVM 达到最大数量时,新的处理请求将等待另一个处理完成。

    以下是如何设置 PDFConverter 组件以允许使用 2 个从属 JVM 进行多线程:

    //create converter
    PDFConverter converter = new PDFConverter();
    
    //set multi-threading
    converter.setMaxProcessCount(2);
    

    (ghost4j - Thread safety and multi-threading)

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 2016-09-14
      • 2012-03-31
      • 1970-01-01
      相关资源
      最近更新 更多