首页 文章

POI工作簿多线程

提问于
浏览
0

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

2 回答

  • 0

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

  • 0

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

    简而言之:处理不同线程中的不同文档对象将起作用 . 在多个线程中访问同一文档将不起作用 . 这意味着不检查工作簿/文档/幻灯片对象的线程安全性,但是任何全局保存的对象(如全局高速缓存或其他数据结构)都会相应地防止多线程访问 . 有关同时访问不同线程中的不同工作簿表的讨论 . 虽然这可能在某种程度上起作用,但是由于多线程问题通常仅在多个线程处于活动状态并且系统处于高负载(即 生产环境 用途)的长运行时之后才会出现,因此可能导致很难跟踪错误 . 在未来的Apache POI版本中它也可能会中断,因为我们没有以这种方式专门测试库 .

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

相关问题