0
ここで示唆しているように、parallelStream()を使用してHTMLリンクを解析しています: Jsoup parsing - parsing multiple links simultaneouslyparallelStream()現在のインデックスを取得する方法
public static void createPageListByObject(String urlsFileName, int Y) throws IOException {
//List<String> URLs = new ArrayList<>();
int indx = 1;
URLs.parallelStream().forEach(URL-> {
try {
Page page = Page.Generate(URL, Y);
FileUtils.writePageToFile(page, indx++);
}catch (Exception e){
System.out.println(e.getMessage() + ". Skipping to next url");
}
});
public static Page Generate(String URL, int Y) throws IOException, InstantiationException, IllegalAccessException, NoSuchFieldException, URISyntaxException {
Connection.Response res = Jsoup.connect(URL).userAgent("Chrome/5.0").timeout(10 * 1000).execute();
Page tutorialPage = new Page(URL);
return tutorialPage;
}
public static void writePageToFile(Page page, int i) throws IOException{
String directoryName = getDirectory(page.vectorXY().Y);
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(directoryName + "//page" + i));
os.writeObject(page);
os.close();
}
問題は、parallelStream()を使用すると時々同じインデックスが2回取得され、ファイルが上書きされることです。私は何らかの理由で現在のインデックスを取得する必要がありますparallelStreamが動作しています。 提案がありますか?