【发布时间】:2014-09-17 09:09:44
【问题描述】:
我有大量文件需要转换为不同的格式。转换是通过将文件名作为参数的 Java-JAR-File 完成的。我现在有一个 Windows 批处理文件,它使用 for 循环遍历所有文件(有一个文件包含需要转换的所有文件的列表)
for /F %%i in (all_files.txt) do call java -cp %Classpath% de.xyz.Convert -xml %%i .\xml
现在我要执行此操作的机器有八个内核。文件数量约为 360.000,我希望它花费尽可能少的时间,所以我想使用尽可能多的内核。我将如何尽可能简单地使用多个内核? Windows 会自己做吗?
【问题讨论】:
-
当然允许这由单个 JVM 管理会减少开销。修改您的 jar 以获取输入目录并将该目录中的所有文件处理到输出目录中,然后允许它是多线程的。 :) - 我认为您的问题可能是磁盘读取速度。
-
很遗憾,我无法修改 jar 文件,它是“专有的”。 ://
-
好吧,也许我可以做很多逆向工程,但我真的没有时间去做。
-
鉴于您可以使用 jar,我会考虑为其创建一个可运行的包装器,无需专门修改 jar,只需将其用作库即可。我只是不喜欢一次生成 360,000 个 JVM 实例的想法......
-
你有一个简单的例子来说明在这种情况下你将如何做到这一点?将 JAR 文件用作单独 Java 应用程序中的库,然后创建运行 de.xyz.Convert 程序的线程?
标签: java windows parallel-processing batch-processing