当前位置:嗨网首页>书籍在线阅读

17-结果分析

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

结果分析

本节通过实现 Task 类来处理一个整型数组。该类检查要处理的元素大小是否超过 10 ,如果超过 10 则分割成两组,并创建两个新的 Task 实例对象来处理这些元素;否则检查这些元素是否在数组中处于前4个位置,若是则抛出 RuntimeException 异常。当程序运行时,程序不会在抛出异常时停止运行。在 Main 类中,你在初始任务中调用 ForkJoinTask 类的 isCompletedAbnormally() 方法,如果该任务或者其子任务抛出异常,则该方法返回 true 。也可以调用同一个实例对象中的 getException() 方法来获取抛出的异常。

当在任务中抛出一个未受检异常时,它会影响到其父类,以及父类的父类等。如果修改程序的整体输出,则可以看到部分任务的结束信息不会在控制台中输出。这些任务输出的开头信息如下所示:

Task: Starting form 0 to 100
Task: Starting form 0 to 50
Task: Starting form 0 to 25
Task: Starting form 0 to 12
Task: Starting form 0 to 6

这些任务是抛出异常的任务及其父类,它们都未正常结束。在开发程序时,我们应该考虑是否想要可以抛出异常的 ForkJoinPoolForkJoinTask 实例对象。

本案例的部分运行结果如下图所示。

44.png