我需要写入数据 block (字符),并且我不关心这些 block 的顺序。我想知道我应该使用什么样的OutputStream才能获得高性能?
最佳答案
简单地从多个线程调用普通的 ZipOutputStream 是行不通的。 ZipOutputStream API 有一个模型,您可以一次写入一个条目,如下所示:
ZipOutputStream zos = ...
while (...) {
zos.putNextEntry(...);
while (...) {
zos.write(...);
}
zos.closeEntry();
}
该模型本质上是非线程安全的。
为了以线程安全的方式执行此操作,您需要将 ZipOutputStream 包装在一个类中,该类在一个同步方法调用中执行放置/写入/关闭操作。这意味着您本质上是连续执行 Zip 输出操作,这在很大程度上违背了您这样做的目的。
关于java - 如何使用java中的任何类型的OutputStream实现最高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482571/