如何在Java中使用多线程同时读写同一张Excel工作表(HSSF/XSSF)
我需要阅读Excel表格,并用Java编写相同的表格。它可以很好地与单线程。因为它一条记录一条记录地处理,所以它成为一个耗时的过程。我想使用多线程一次处理多条记录 示例文件-file.xlsx 姓名和年龄从工作表中读出,应用一些逻辑并写入备注栏 假设我有1000条记录,我想分割500条记录,使用多线程同时处理 在上面的场景中,2个线程开始读取(名称和年龄列)和写入(备注列)到同一个Excel工作表 第一个线程应处理1到500,如何在Java中使用多线程同时读写同一张Excel工作表(HSSF/XSSF),java,multithreading,apache-poi,coding-efficiency,Java,Multithreading,Apache Poi,Coding Efficiency,我需要阅读Excel表格,并用Java编写相同的表格。它可以很好地与单线程。因为它一条记录一条记录地处理,所以它成为一个耗时的过程。我想使用多线程一次处理多条记录 示例文件-file.xlsx 姓名和年龄从工作表中读出,应用一些逻辑并写入备注栏 假设我有1000条记录,我想分割500条记录,使用多线程同时处理 在上面的场景中,2个线程开始读取(名称和年龄列)和写入(备注列)到同一个Excel工作表 第一个线程应处理1到500, 第二个线程应处理501到1000 我怎样才能得到这个问题的最佳解决
第二个线程应处理501到1000
我怎样才能得到这个问题的最佳解决方案?我正在使用POI jar处理Excel。您所要求的不太可能可靠地工作。这可以归结为ApachePOI的线程安全属性。报告说: “简言之:在不同线程中处理不同的文档对象将起作用。在多个线程中访问同一文档将不起作用。” 您希望使用多个线程同时读取和写入同一个电子表格。这就是FAQ所说的不安全的用例
我怎样才能得到这个问题的最佳解决方案 为了获得更快的解决方案,您需要在处理数据时使用其他数据表示形式(即,不是Excel电子表格):
- 您可以让Excel将数据导出为CSV文件,处理该文件以创建新的CSV,然后将CSV重新导入电子表格李>
- 你可以完全脱离电子表格;e、 g.使用数据库