我正在使用Ghost4J本地库32位和64位动态链接库文件来转换我的PDF图像。我需要在ThreadPoolExecutor中使用它,也就是多线程,但是由于它是原生的,所以它经常使我的JBoss崩溃。
在我同步这个库的使用之后,线程不能很好地执行。也就是说,使用4个线程和8个线程,其性能没有差别。
有什么安全的方法可以做到这一点?
发布于 2013-07-16 20:24:09
你有没有尝试过ghost4j推荐的多线程技术:
Multi-threading
确保Ghostscript是线程安全的是第一步。但是,如果Ghost4J要在多线程/多用户环境中使用(例如在webapp中),该怎么办?
如果使用Ghost4J编写文档转换user应用程序,如果用户必须等待之前的用户请求完成,那么使用单个Ghostscript解释器可能是一个真正的问题。
为了克服这一限制,Ghost4J在其高级应用编程接口组件(从0.4.0版开始)上提供了多线程支持。
这怎么可能呢?:组件处理在不同的JVM中进行。
主JVM中的组件能够启动其他JVM(在其他系统进程中运行),并使用cajo库(嵌入在ghost4j JAR文件中)控制它们。
要确保可以从主JVM创建从JVM,请检查是否可以使用Java命令从命令行启动java。
可以通过设置组件的maxProcessCount属性(如果可用)来控制多线程行为:
下面是如何设置PDFConverter组件以允许使用2个从JVM进行多线程:
//create converter
PDFConverter converter = new PDFConverter();
//set multi-threading
converter.setMaxProcessCount(2);()
https://stackoverflow.com/questions/17674165
复制相似问题