【问题标题】:POI Workbook MultithreadPOI 工作簿多线程
【发布时间】:2012-01-24 11:44:15
【问题描述】:

是否可以在多线程环境中写入同一个工作簿(HSSFWorkbook)?
工作簿存储在线程共享的线程安全集合中。
每个线程都在不同的工作表上工作。

【问题讨论】:

  • POI 文档是否直接表明该库是线程安全的? (即有意实施。)如果不是,假设不是。

标签: java excel apache-poi


【解决方案1】:

是的,您可以在多线程环境中写入同一个工作簿。但是如果你让它成为线程安全的,那么一次只有一个线程可以访问它。

【讨论】:

  • 我不明白,我想使用一个工作簿,所有线程都会获得对该线程的引用并写入新工作表
  • @omrid 你能显示一些代码吗?到目前为止你尝试过什么?也许到时候我们就能帮助你。
  • 我不确定您是否可以让多个线程写入 same 工作簿,当然并非适用于所有情况。多个线程写入自己的工作簿很好
【解决方案2】:

FAQ中的相关条目描述如下:

简而言之:在不同的线程中处理不同的文档对象 将工作。在多个线程中访问同一个文档不会 工作。

这意味着不检查工作簿/文档/幻灯片对象 线程安全,但任何全局持有的对象,如全局缓存或 其他数据结构防止多线程访问 相应地。

已经讨论过访问不同的工作簿表 同时在不同的线程中。虽然这可能在某种程度上起作用, 它可能会导致很难将错误作为多线程问题进行跟踪 通常仅在长时间运行后出现许多线程时 活动且系统处于高负载下,即在生产使用中!还 它可能会在未来版本的 Apache POI 中中断,因为我们不会 专门以这种方式使用该库进行测试。

因此,您需要确保只有一个线程同时处理一个工作簿对象才能确定,例如通过锁定 Workbook 对象本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多