I reproduce this issue very difficult, and can't give you a reproduce sample code.
But in Eclipse, add breakpoint at
com.aspose.cells.a.c.zp.a(com.aspose.cells.DateTime, java.lang.String, com.aspose.cells.b.a.c.za)
and run this code
int N = 2;
for (int i = 0; i < N; i++) {
new Thread() {
public void run() {
try {
Workbook wb = new Workbook("C:/x.xlsx");
wb.save(new ByteArrayOutputStream(), SaveFormat.XLSX);
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
Eclipse will break on method com.aspose.cells.a.c.zp.a in Thread-1 and Thread-2
Use "step into" until stack frame like:
Thread [Thread-1] (Suspended)
java.text.SimpleDateFormat(java.text.DateFormat).format(java.util.Date) line: 345
com.aspose.cells.a.c.zp.a(com.aspose.cells.DateTime, java.lang.String, com.aspose.cells.b.a.c.za) line: not available
com.aspose.cells.DateTime.a(java.lang.String, com.aspose.cells.b.a.c.za) line: not available
com.aspose.cells.zzb.a(com.aspose.cells.DateTime) line: not available
com.aspose.cells.zuc.a(com.aspose.cells.zciw) line: not available
com.aspose.cells.zvc.f() line: not available
com.aspose.cells.zvc.c() line: not available
com.aspose.cells.zvb.a(com.aspose.cells.Workbook, com.aspose.cells.b.a.d.zm, int, com.aspose.cells.SaveOptions) line: not available
com.aspose.cells.Workbook.a(com.aspose.cells.b.a.d.zm, com.aspose.cells.SaveOptions) line: not available
com.aspose.cells.Workbook.save(java.io.OutputStream, com.aspose.cells.SaveOptions) line: not available
com.aspose.cells.Workbook.save(java.io.OutputStream, int) line: not available
Thread [Thread-2] (Suspended)
java.text.SimpleDateFormat(java.text.DateFormat).format(java.util.Date) line: 345
com.aspose.cells.a.c.zp.a(com.aspose.cells.DateTime, java.lang.String, com.aspose.cells.b.a.c.za) line: not available
com.aspose.cells.DateTime.a(java.lang.String, com.aspose.cells.b.a.c.za) line: not available
com.aspose.cells.zzb.a(com.aspose.cells.DateTime) line: not available
com.aspose.cells.zuc.a(com.aspose.cells.zciw) line: not available
com.aspose.cells.zvc.f() line: not available
com.aspose.cells.zvc.c() line: not available
com.aspose.cells.zvb.a(com.aspose.cells.Workbook, com.aspose.cells.b.a.d.zm, int, com.aspose.cells.SaveOptions) line: not available
com.aspose.cells.Workbook.a(com.aspose.cells.b.a.d.zm, com.aspose.cells.SaveOptions) line: not available
com.aspose.cells.Workbook.save(java.io.OutputStream, com.aspose.cells.SaveOptions) line: not available
com.aspose.cells.Workbook.save(java.io.OutputStream, int) line: not available
You will find "this" in Thread-1 and Thread-2 are both SimpleDateFormat, and have same id that mean they are the same instance. Because SimpleDateFormat is not thread safe, in some rare case will throw "ArrayIndexOutOfBoundsException".