我也遇到了同样的问题,经过尝试 我发现单线程运行没问题。在多个请求多个线程运行下会偶发性出现问题
public static void main(String[] args) throws Exception {
// 简单模拟多线程操作 偶发性出现 javajdk环境1.8
final Document document = new Document("文件路径");
for (int i = 0; i < 50 ; i++) {
// 创建多个线程并启动
Thread thread1 = new Thread(()-> {
try {
System.out.println(document.getPageCount());
} catch (Exception e) {
e.printStackTrace();
}
});
Thread thread2 = new Thread(()-> {
try {
System.out.println(document.getPageCount());
} catch (Exception e) {
e.printStackTrace();
}
});
Thread thread3 = new Thread(()-> {
try {
System.out.println(document.getPageCount());
} catch (Exception e) {
e.printStackTrace();
}
});
thread1.start();
thread2.start();
thread3.start();
}
}
//会偶发性的出现一下问题 java.lang.NullPointerException java.lang.ArrayIndexOutOfBoundsException:
java.lang.ClassCastException 等问题
@gyc 在您的代码中,您在多个线程中处理同一文档。 不支持这种情况。 只要一次只有一个线程处理文档,Aspose.Words 就是多线程安全的。 一个线程处理一个文档是一种典型的场景。 不同的线程可以安全地同时处理不同的文档。
上述代码只是一种简单的模拟。实际业务场景是我在内存中缓存了一个公共文档document对象。多个线程会获取这个文document作为新文当中的一个section节 。感谢您的答疑。我想我大概知道问题的所在了,以及如何解决了