这是一个程序,读取信息网站为以前的格式,它使用递归和executor.It工作正常,我的问题是测试程序是否完成和成功通知。java中执行程序如何终止递归?

public class NewClass {

static String levels[] = { "div.col-md-9 li a", "div#sidebar ul li a" };

static String links = "";

private void getRecursive(String href, int level, final ExecutorService executor) {

if (level > levels.length - 1) {

return;

}

Document doc;

try {

doc = Jsoup.connect(href).get();

Elements elements = doc.select(levels[level]);

final int flevel = ++level;

for (final Element element : elements) {

executor.execute(new Runnable() {

@Override

public void run() {

if (!element.attr("href").isEmpty()) {

links += element.attr("abs:href") + "\n";

System.out.println(links);

getRecursive(element.attr("abs:href"), flevel, executor);

}

}

});

}

} catch (IOException e1) {

e1.printStackTrace();

}

}

如果levels.length = 1,规则执法的效果很好,但如果levels.length> 1会出现错误:异常在线程 “池1线程138” 的java.util .concurrent.RejectedExecutionException

public static void main(String[] args) {

try {

ExecutorService executor = Executors.newFixedThreadPool(5);

new NewClass().getRecursive("http://www.java2s.com/", 0, executor);

executor.shutdown();

executor.awaitTermination(1, TimeUnit.HOURS);

if (executor.isTerminated()) {

JOptionPane.showMessageDialog(null, "Success");

}

} catch (Exception ex) {

Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

2015-11-04

Ma Tâm

java 递归终止_java中执行程序如何终止递归?相关推荐

  1. java 递归 堆栈_Java中的堆栈安全递归

    java 递归 堆栈 在本文中,摘自< Java中的函数编程 >一书,我解释了如何使用递归,同时避免了StackOverflow异常的风险. Corecursion正在使用第一步的输出作为 ...

  2. java递归和迭代_Java中的迭代与递归

    递归 提到迭代,不得不提一个数学表达式: n!=n*(n-1)*(n-2)*...*1 有很多方法来计算阶乘.有肯定数学基础的人都知道n!=n*(n-1)!因而,代码的实现可以直接写成: 代码一 in ...

  3. java 递归原理_Java中递归原理实例分析

    本文实例分析了Java中递归原理.分享给大家供大家参考.具体分析如下: 解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中 ...

  4. java如何抛出异常_java中 方法中抛出异常处理方法

    展开全部 Java语言提供e69da5e887aa62616964757a686964616f31333366306461两种异常处理机制:捕获异常和声明抛弃异常. 1.捕获异常: (1)在Java程 ...

  5. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  6. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  7. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  8. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

  9. java 数据类型分为_JAVA中分为基本数据类型及引用数据类型

    byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...

最新文章

  1. 使用TortoiseGit处理代码冲突
  2. 深度学习笔记:windows+tensorflow 指定GPU占用内存(解决gpu爆炸问题)
  3. java创建一个程序把输入字符串的大小写互换_8 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转...
  4. 关于css 的AST 语法树的理解
  5. 神经网络之激活函数(activation function)
  6. 三维GIS引擎平台设计
  7. 【百度LOGO权限】三天时间从获取LOGO权限到审核通过
  8. 基于Nginx,搭建HLS(HTTP Live Streaming)server,点播直播
  9. 使用laravel-wechat微信支付
  10. UE4 打包问题总结
  11. 使用python获取win10锁屏照片
  12. 华为服务器显示灯p02,华为服务器uid灯蓝色
  13. 史上最全!国内外最新免费3D模型下载网站分享!
  14. h5上传图片html5,h5图片上传简易版(FileReader+FormData+ajax)
  15. deepin入坑前必读(懊悔篇)
  16. 单片机课程设计-基于单片机直流电机控制器设计
  17. H3CV7交换机软件版本升级方法
  18. 京东网页版静态页面的几个问题
  19. debug功能使用解析
  20. CRM的终点是CSM(客户成功)

热门文章

  1. 本地用户与组账户的管理 组策略
  2. Python矩阵相乘
  3. ARMv8 ARM64 架构 整体介绍
  4. NestedVAE: Isolating Common Factors via Weak Supervision.
  5. 全志a64linux内核编译,全志A64 lichee编译脚本build.sh分析
  6. 大学生报计算机二级一般报哪一科,计算机二级考试报考哪一个科目
  7. (转)【百度地图API】如何制作班级地理通讯录?LBS通讯录
  8. 《Extra Credit:如何成为游戏策划》字幕版
  9. A股-进阶-股市中投资心理实战
  10. AQS之公平锁和非公平锁