使用SAXParser进行多线程解析多个XML文件

时间:2015-07-09 09:08:49

标签: java xml multithreading parsing sax

我有一个计时器,它检查文件系统上的新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);

0 个答案:

没有答案