static L webs_readTripleFile_parallel(File f) { if (!f.exists()) ret ll(); Iterator l = linesFromFile(f); new L names; while (it.hasNext()) { S s = trim(it.next()); if (empty(s)) break; names.add(unquote(s)); } final new L> webs; int poolSize = numberOfCores(), queueSize = 1000; NotifyingBlockingThreadPoolExecutor e = new(poolSize, queueSize, 15, TimeUnit.SECONDS); try { int i = 0; for (fS s : l) { ++i; final int _i = i; e.execute(r { pcall { Web web = webs_readTripleFile_line(s, names); if (web != null) synchronized(webs) { webs.add(pair(web, _i)); } }}); } e.shutdown(); e.awaitTermination(1, TimeUnit.DAYS); } finally { e.shutdown(); } ret firstOfPairs(sortBySecondOfPairs_inPlace(webs)); }