我正在使用Apache Commons Compress for Java将多个日志文件压缩为单个tar.bz2存档.
但是,压缩需要很长时间(> 12小时),因为我每天压缩大约20GB的文件.
由于这个库压缩文件单线程,我想知道是否有办法做这个多线程.
我找到了很多解决方案(Commandline pbzip2或一些C库),但我发现的所有java都是这篇博文:
https://plus.google.com/117421466255362255970/posts/3jfKVu325zh
似乎我不能在我的Java应用程序中使用它.
那里有什么吗?你会推荐什么?或者是否有另一种具有类似压缩率的更快解决方案,如bzip2?
解决方法:
由于您有多个文件,因此可以在不同的线程中压缩每个文件.由于您的进程受CPU限制,我建议创建一个固定大小的线程池,即ExecutorService,并为每个要压缩的文件添加一个任务.
注意:如果pbzip2做你想要的,我会用Java调用它.您可能会发现即使是一个线程也很快,因为我见过的用于Java的BZIP2库是本机实现的(与JAR,ZIP和GZIP不同)