我有一个 Java 应用程序,它收到创建 XLSX 文件的请求。
该应用程序是多线程的,这意味着 5 个用户可以同时运行报告。
我的问题是,当报告很大并且 5 个用户一起创建报告时,我收到此消息 java.io.IOException: Could not createtemporary directory '
这可能是因为 5 个线程之一删除了 java.tmp.dir 而其他 4 个线程失败了。
我该如何解决这个问题?
我建议的解决方案之一是为每个线程提供不同的 java.io.tmpdir,这是可以做到的吗?
最佳答案
一种解决方案是在创建临时目录时,线程应该附加一些前缀来唯一标识。因此,不会对同一文件夹进行并发修改。
在实现时你必须考虑可以同时处理多少个请求。你不能创建很多目录。
如果请求数量超出您的处理能力,一种解决方案是使用线程池和队列来保存请求。
或者如果内容相似,那么您可以创建一个模板并动态更改一些数据。因此只有克隆才有效
关于java - Apache POI 在多线程中的 tmp 目录上获取 java.io.IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48048606/