Я собираюсь создать класс, который должен отменять огромные файлы xml.Java JAXB многопоточность unmarshalling
Я реализовал общую демаршаллинг:
public XMLProcessor(XMLFile file) throws JAXBException, IOException, SAXException {
JAXBContext jc = JAXBContext.newInstance(Customers.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
File xml = new File(file.getFile().getOriginalFilename());
file.getFile().transferTo(xml);
this.customers = (Customers) unmarshaller.unmarshal(xml);
}
Он отлично работает, но потребовалось больше минуты, чтобы обработать 1 млн клиентов XML.
Могу ли я улучшить производительность, создав несколько потоков и одновременно отменив несколько частей файла XML?
Как разбить мой XML-файл на части?
Не могли бы вы показать мне пример кода для моего дела?
Я отказался от идеи использования SAX. Вместо этого я создал некоторые собственные аннотированные классы JAXB, и unmarshaller впечатляет быстро. 1,6 ГБ получить unmarshalled за 40 секунд без многопоточности. Этого более чем достаточно для моего случая – cgicgi