【发布时间】:2012-01-24 11:44:15
【问题描述】:
是否可以在多线程环境中写入同一个工作簿(HSSFWorkbook)?
工作簿存储在线程共享的线程安全集合中。
每个线程都在不同的工作表上工作。
【问题讨论】:
-
POI 文档是否直接表明该库是线程安全的? (即有意实施。)如果不是,假设不是。
标签: java excel apache-poi
是否可以在多线程环境中写入同一个工作簿(HSSFWorkbook)?
工作簿存储在线程共享的线程安全集合中。
每个线程都在不同的工作表上工作。
【问题讨论】:
标签: java excel apache-poi
是的,您可以在多线程环境中写入同一个工作簿。但是如果你让它成为线程安全的,那么一次只有一个线程可以访问它。
【讨论】:
FAQ中的相关条目描述如下:
简而言之:在不同的线程中处理不同的文档对象 将工作。在多个线程中访问同一个文档不会 工作。
这意味着不检查工作簿/文档/幻灯片对象 线程安全,但任何全局持有的对象,如全局缓存或 其他数据结构防止多线程访问 相应地。
已经讨论过访问不同的工作簿表 同时在不同的线程中。虽然这可能在某种程度上起作用, 它可能会导致很难将错误作为多线程问题进行跟踪 通常仅在长时间运行后出现许多线程时 活动且系统处于高负载下,即在生产使用中!还 它可能会在未来版本的 Apache POI 中中断,因为我们不会 专门以这种方式使用该库进行测试。
因此,您需要确保只有一个线程同时处理一个工作簿对象才能确定,例如通过锁定 Workbook 对象本身。
【讨论】: