You can investigate the source and see, but the reason POI is not thread safe is because it is extremely difficult to do with projects based on XML-Beans. The POI team has no plans to revisit the subject at this point.
On Thu, Aug 23, 2018 at 12:24 PM Pavel Drankov <[email protected]> wrote: > > > > See question 20 from the POI FAQ [1]. Accessing the same document > objects > > from multiple threads is not supported. > > Good, but can we make these objects thread safe at least? > > On Thu, 23 Aug 2018 at 19:22, Greg Woolsey <[email protected]> wrote: > > > See question 20 from the POI FAQ [1]. Accessing the same document > objects > > from multiple threads is not supported. > > > > [1] https://poi.apache.org/faq.html > > > > On Thu, Aug 23, 2018 at 3:47 AM Pavel Drankov <[email protected]> > wrote: > > > > > Hi, > > > > > > I have an instance of SXSSFSheet and when I'm trying to fill it with > > > values concurrently, such exceptions occurs: > > > > > > java.util.ConcurrentModificationException: null > > > at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1211) > > > ~[na:1.8.0_152] > > > at java.util.TreeMap$EntryIterator.next(TreeMap.java:1247) > > ~[na:1.8.0_152] > > > at java.util.TreeMap$EntryIterator.next(TreeMap.java:1242) > > ~[na:1.8.0_152] > > > at > > org.apache.poi.xssf.streaming.SXSSFSheet.getRowNum(SXSSFSheet.java:1851) > > > ~[poi-ooxml-3.14.jar:3.14] > > > at org.apache.poi.xssf.streaming.SXSSFRow.getRowNum(SXSSFRow.java:218) > > > ~[poi-ooxml-3.14.jar:3.14] > > > at > org.apache.poi.xssf.streaming.SXSSFCell.getRowIndex(SXSSFCell.java:84) > > > ~[poi-ooxml-3.14.jar:3.14] > > > at > > org.apache.poi.xssf.streaming.SXSSFCell.setHyperlink(SXSSFCell.java:649) > > > ~[poi-ooxml-3.14.jar:3.14] > > > > > > java.lang.NullPointerException: null > > > at > > > > > > > > > org.apache.poi.xssf.streaming.AutoSizeColumnTracker.updateColumnWidths(AutoSizeColumnTracker.java:302) > > > ~[poi-ooxml-3.14.jar:3.14] > > > at > > > > > > org.apache.poi.xssf.streaming.SXSSFSheet.flushOneRow(SXSSFSheet.java:1834) > > > ~[poi-ooxml-3.14.jar:3.14] > > > at > > org.apache.poi.xssf.streaming.SXSSFSheet.flushRows(SXSSFSheet.java:1813) > > > ~[poi-ooxml-3.14.jar:3.14] > > > at > > org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:155) > > > ~[poi-ooxml-3.14.jar:3.14] > > > > > > I put synchronization on the object access and it works fine now, but > is > > > not it an issue? Should the SXSSFCell and SXSSFSheet objects be thread > > > safe? > > > > > > Best wishes, > > > Pavel > > > > > >
