我有一个计时器,它检查文件系统上的新XML文件并解析它们。 XML文件可能会变大(5GB),所以我使用的是sax解析器。为了提高工作效率,我编写了一个带有执行服务的多线程程序。
XML文件可以属于不同的来源。因为每个源都是一个创建的线程,并且在此线程中解析了属于源的XML文件。在每个线程中都有一个新的SaxParserFactory,并为每个XML文件创建一个新的SaxParser。
问题是不同的解析器会杀死彼此的进程。当我检查解析结果时,我注意到一些XML的天堂已被完全解析。解析器中途退出并且不会抛出任何异常。我在单线程中解析XML文件时没有问题。
现在我不确定,如果SaxParserFactory和SaxParser真的创建新实例。
你们有什么想法会导致这种情况吗?
SAXParser parser = factory.newSAXParser();
AccountSaxHandler saxHandler = new AccountSaxHandler();
parser.parse(new File(localFilePath), saxHandler);