POI 同一オブジェクトへの複数スレッドからの書き込みについて
Apache POIで同じWookbookオブジェクトに複数スレッドから書き込みして問題ないでしょうか?
下記のコードを例とします。
fun writeBookFromMultiThread() {
val templatePath = "./work/test.xlsx"
val outputFilePath = "./out/test.xlsx"
WorkbookFactory.create(FileInputStream(templatePath)).use { book ->
val sheet1 = book.getSheetAt(0)
val sheet2 = book.getSheetAt(1)
val future1 = CompletableFuture.runAsync { writeSheet1(sheet1) }
val future2 = CompletableFuture.runAsync { writeSheet2(sheet2) }
CompletableFuture.allOf(future1, future2).join()
FileOutputStream(outputFilePath).use { book.write(FileOutputStream(outputFilePath)) }
}
}
0