如何在Java中使用Multhreading同时读取和写入同一Excel工作表(HSSF / XSSF)

问题描述 投票:-1回答:1

我需要阅读Excel工作表并用Java写入同一工作表。它与单线程一起工作良好。由于它逐条记录地处理,因此成为耗时的过程。我想使用多线程一次处理多个记录。

示例:样本文件-File.xlsxenter image description here

从表中读取名称和年龄,并应用一些逻辑并将其写入备注栏。

假设我有1000条记录,我想划分500条记录以使用多线程同时处理。

在上述情况下,两个线程开始读取(名称和年龄列)并写入(备注列)到同一张Excel工作表。

第一个线程应处理1到500,第二个线程应处理501至1000

[请帮助我以获得最佳解决方案。我正在使用POI jar来处理excel。

java multithreading apache-poi coding-efficiency
1个回答
0
投票

您要的东西不太可能可靠地工作。它归结为Apache POI的线程安全属性。 FAQ这样说:

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

您想使用多个线程同时读取和写入同一电子表格。这是FAQ所说的不安全的用例。


请帮助我以获得最佳解决方案。

为获得最佳解决方案,您将需要其他一些表示形式的数据;即不是Excel电子表格。

© www.soinside.com 2019 - 2024. All rights reserved.