博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JUC组件扩展(二)-JAVA并行框架Fork/Join(三):在任务中抛出异常
阅读量:5861 次
发布时间:2019-06-19

本文共 1557 字,大约阅读时间需要 5 分钟。

在java当中,异常一共分为两种。一种是运行时异常,一种是非运行是异常。

非运行时异常:这些异常必须在方法上通过throws子句抛出。或者在方法体内进行try{…}catch{…}来捕获异常。
运行时异常: 这些方法不需要在throws子句抛出,也不需要在方法体内进行try{}catch{}操作。

在ForkJoin框架中声明的compute()方法不允许在运行是抛出异常,因为这个方法的实现没有包含任何throws申明。因此,必须包含必须的代码来处理相关的异常。

下面通过一个示例来说明这种情况。

首先创建一个ForkJoin框架执行的任务类。

Task.java

public class Task extends RecursiveTask
{ private static final long serialVersionUID = 1L; private int array[]; private int start,end; public Task(int array[],int start,int end){ this.array = array; this.start = start; this.end = end; } protected Integer compute() { System.out.printf("Task:Start from %d to %d\n",start,end); if(end-start<10){ if((start<3)&&(3

然后是执行的主类:

public class Main {    public static void main(String[] args) {        int array[] = new int[100];        Task task = new Task(array,1,100);        ForkJoinPool pool = new ForkJoinPool();        pool.execute(task);        pool.shutdown();        try {            pool.awaitTermination(1,TimeUnit.DAYS);        } catch (InterruptedException e) {            e.printStackTrace();        }        if(task.isCompletedAbnormally()){            System.out.print("Main:An exception has occured\n");            System.out.printf("Main:%s\n",task.getException());        }    }}

运行结果为:

Task:Start from 1 to 7Task:Start from 1 to 7Task:Start from 1 to 13Task:Start from 1 to 7Task:Start from 1 to 7Main:An exception has occuredMain:java.lang.RuntimeException: java.lang.RuntimeException: This task throws anException:Task from 1to 7

 

转载地址:http://nnrjx.baihongyu.com/

你可能感兴趣的文章
GRUB Legacy
查看>>
iOS开发之常用的那些工具类和方法
查看>>
关于 error: LINK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案...
查看>>
linix下用keepalived搭建高可用myqsl-ha
查看>>
我的友情链接
查看>>
hexo博客解决不蒜子统计无法显示问题
查看>>
python实现链表
查看>>
java查找string1和string2是不是含有相同的字母种类和数量(string1是否是string2的重新组合)...
查看>>
Android TabActivity使用方法
查看>>
java ShutdownHook介绍与使用
查看>>
Eclipse的 window-->preferences里面没有Android选项
查看>>
《麦田里的守望者》--[美]杰罗姆·大卫·塞林格
查看>>
[置顶] 深入探析Java线程锁机制
查看>>
ORACLE 日期函数[转载]
查看>>
遇到的那些坑
查看>>
央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家
查看>>
[转] Lazy evaluation
查看>>
常用查找算法总结
查看>>
grep 零宽断言
查看>>
被神话的大数据——从大数据(big data)到深度数据(deep data)思维转变
查看>>