honesome
@honesome (honesome)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

POI 同一オブジェクトへの複数スレッドからの書き込みについて

Q&A

Closed

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

1Answer

POIのFAQを見る限りでは、同一のドキュメントを複数のスレッドでアクセスすることは避けたほうがよさそうです。

1Like

Comments

  1. @honesome

    Questioner

    ありがとうございます。
    止めたほうが良さそうですね。

Your answer might help someone💌