бесконечного цикла или ExecutorService именно это и предотвращает?
BlockingQueue<LinkDict> queue = new PriorityBlockingQueue<LinkDict>();
queue.add(new LinkDict(path, 0));
ExecutorService exec = Executors.newFixedThreadPool(threadCount);
while (true){
for (int i=0; i < threadCount; i++){
exec.submit(() -> {
try {
LinkDict cell = queue.take();
System.out.println(Thread.currentThread().getId() + "\s" + cell.getLink());
String text = MyRequest.httpsRequest(cell.getLink());
LinksWorker worker = new LinksWorker(text);
for (String URL: worker.getList()){
queue.add(new LinkDict(URL, cell.getDepth() + 1));
}
} catch (Exception ignored){}
});
}
}
Второй вопрос, как выйти из цикла while, если queue пуст и нет работающих потоков?
Any answers?
Обсуждают сегодня