我有一个计时器,它检查文件系统上的新XML文件并解析它们 . XML文件可能会变大(5GB),所以我使用的是sax解析器 . 为了提高工作效率,我编写了一个带有 Actuator 服务的多线程程序 .

XML文件可以属于不同的源 . 因为每个源都是一个创建的线程,并且在此线程中解析了属于源的XML文件 . 在每个线程中都有一个新的SaxParserFactory,并为每个XML文件创建一个新的SaxParser .

问题是不同的解析器会杀死彼此的进程 . 当我检查解析结果时,我注意到一些XML尚未完全解析 . 解析器中途退出并且不会抛出任何异常 . 我在单线程中解析XML文件时没有问题 .

现在我不确定,如果SaxParserFactory和SaxParser真的创建新实例 .

你们有什么想法会导致这个问题吗?

SAXParser parser = factory.newSAXParser();
AccountSaxHandler saxHandler = new AccountSaxHandler();
parser.parse(new File(localFilePath), saxHandler);