java - 如何使用java中的任何类型的OutputStream实现最高性能?

标签 java performance api

我需要写入数据 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/

相关文章:

java - 文件/扫描仪简单解析问题

xml - 如何加快从磁盘加载 XML 文档的速度?

python - 使用元素求幂加速嵌套 for 循环

angular - 在 nginx 上托管静态 angular2 应用程序并将 http 请求代理到后端 api

web-services - Magento 网络服务 API 产品选项

java - 如何在java中使用运行时类执行多个窗口命令

java - Hibernate创建表时出现异常

java - 有什么方法可以在构造函数中嵌入代码,该构造函数将在所有子类的构造函数代码之后运行?

c# - 角色在移动时振动 30fps

api - 在 youtube channel 上传的最新视频