XMLInputFactory factory = XMLInputFactory.newInstance(); factory.setProperty(XMLInputFactory.IS_COALESCING, true); factory.setProperty(XMLInputFactory2.P_REPORT_PROLOG_WHITESPACE, true); factory.setProperty(XMLInputFactory2.P_PRESERVE_LOCATION, true); factory.setProperty(XMLInputFactory2.P_REPORT_TEXT_WHITESPACE, true); factory.setProperty(XMLInputFactory2.P_REPORT_CDATA_WHITESPACE, true); factory.setProperty(XMLInputFactory2.P_LEXICAL_HANDLER_PROPERTY, new LexicalHandlerImpl()); XMLStreamReader reader = factory.createXMLStreamReader(inputStream); XMLInputFactory factory = XMLInputFactory.newInstance(); factory.setProperty(XMLInputFactory.IS_COALESCING, true); factory.setProperty(XMLInputFactory2.P_REPORT_PROLOG_WHITESPACE, true); factory.setProperty(XMLInputFactory2.P_PRESERVE_LOCATION, true); factory.setProperty(XMLInputFactory2.P_REPORT_TEXT_WHITESPACE, true); factory.setProperty(XMLInputFactory2.P_REPORT_CDATA_WHITESPACE, true); factory.setProperty(XMLInputFactory2.P_LEXICAL_HANDLER_PROPERTY, new LexicalHandlerImpl()); XMLStreamReader reader = factory.createXMLStreamReader(inputStream); while (reader.hasNext()) { int eventType = reader.next(); if (eventType == XMLStreamReader.START_ELEMENT) { // ... } // ... } // ... ExecutorService executor = Executors.newFixedThreadPool(threadCount); List<InputStream> inputStreams = splitXMLFile(inputStream, threadCount); List<Future<Result>> results = new ArrayList<>(); for (InputStream input : inputStreams) { Callable<Result> callable = () -> { XMLInputFactory factory = XMLInputFactory.newInstance(); // ... XMLStreamReader reader = factory.createXMLStreamReader(input); // ... return result; }; Future<Result> future = executor.submit(callable); results.add(future); } for (Future<Result> future : results) { Result result = future.get(); // ... } executor.shutdown();


上一篇:
下一篇:
切换中文