JAVA 中的网络爬虫.java.out.lang.outofmemory 无法创建本机线程



我目前正在构建这个网络爬虫来获取起始网址的所有链接,并从这些链接中抓取所有链接等。我正在使用线程,所以每次该过程完成时,都会调用一个新线程,我加载了 1000 个线程,我使用了 thread.interrupt 函数,但它仍然没有删除线程并创建一个线程。我尝试每次只使用一个线程或最多两个线程。我还注意到,一旦我运行我的爬虫,我的互联网就会开始崩溃,这意味着网站在我打开网络爬虫之前不会加载。我想我发送了太多的http请求。如果有人知道如何限制线程或修复以下错误:

java.lang.outOfMemory : 无法创建本机线程

改用线程池并以这种方式限制它。也内置于Java。创建一个并将爬网程序作业添加到其中以执行。

ExecutorService executor = Executors.newFixedThreadPool(100);

然后: executor.execute(new LinkCrawler(...));在此处添加您的链接抓取工具。

请参阅:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html甚至包含一个与网络相关的示例。

最新更新