来自:http://ifeve.com/fork-join-5/

在Java中有两种异常:

已检查异常(Checked exceptions):这些异常必须在一个方法的throws从句中指定或在内部捕捉它们。比如:IOException或ClassNotFoundException。

未检查异常(Unchecked exceptions):这些异常不必指定或捕捉。比如:NumberFormatException。

在ForkJoinTask类的compute()方法中,你不能抛出任何已检查异常,因为在这个方法的实现中,它没有包含任何抛出(异常)声明。你必须包含必要的代码来处理异常。但是,你可以抛出(或者它可以被任何方法或使用内部方法的对象抛出)一个未检查异常。ForkJoinTask和ForkJoinPool类的行为与你可能的期望不同。程序不会结束执行,并且你将不会在控制台看到任何关于异常的信息。它只是被吞没,好像它没抛出(异常)。你可以使用ForkJoinTask类的一些方法,得知一个任务是否抛出异常及其异常种类。在这个指南中,你将学习如何获取这些信息。

task:

package com.wenbronk.forkjoin.exception;

import java.util.concurrent.RecursiveTask;

import java.util.concurrent.TimeUnit;/**

* forkjoin 中抛出异常的处理

* Created by wenbronk on 2017/7/27.*/

public class Task extends RecursiveTask{private intarray[];private intstart, end;public Task(int[] array, int start, intend) {this.array =array;this.start =start;this.end =end;

}

@OverrideprotectedInteger compute() {

System.out.printf("task: start from %d to %d \n", start, end);if (end - start < 10) {if ((3 > start) && (3

System.out.println("paochu yichang" + start + "to" +end);throw new RuntimeException("task from" + start + "to" +end);

}try{

TimeUnit.SECONDS.sleep(1);

}catch(Exception e) {

e.printStackTrace();

}

}else{int mid = (start + end) /2;

Task task1= newTask(array, start, mid);

Task task2= newTask(array, mid, end);

invokeAll(task1, task2);

}

System.out.printf("task: end from %d to %d \n", start, end);return 0;

}

}

main:

package com.wenbronk.forkjoin.exception;

import java.util.concurrent.ForkJoinPool;

import java.util.concurrent.TimeUnit;/**

* Created by wenbronk on 2017/7/27.*/

public classExceptionMain {public static voidmain(String[] args) {int[] array = new int[100];

Task task= new Task(array, 0, 100);

ForkJoinPool forkJoinPool= newForkJoinPool();

forkJoinPool.execute(task);

forkJoinPool.shutdown();try{

forkJoinPool.awaitTermination(1, TimeUnit.DAYS);

}catch(InterruptedException e) {

e.printStackTrace();

}if(task.isCompletedAbnormally()) {

System.out.println("main::: an exception has occured \n");

System.out.printf("main:::: %s \n", task.getException());

}

System.out.printf("main: result: %d", task.join());

}

}

原文:http://www.cnblogs.com/wenbronk/p/7245765.html

java join 异常_java-forkjoin异常返回相关推荐

  1. java 运行异常处理_Java编程异常处理和I/O流

    重点: 1.在编写程序时,要正确地使用捕获例外和声明抛出异常的两种例外处理的方法. 2.遇到实际问题时,要根据需要正确使用各种输入/输出流,特别是对中文使用适当的字符输入流. 3.正确使用对象串行化的 ...

  2. java异常_Java的异常体系

    保证程序的健壮性 java异常体系 error:比如栈内存溢出(StackOverError) Exception这种异常又分为两类:运行时异常和编译异常. 1.运行时异常(逻辑异常):代码不规范引起 ...

  3. java 异常_Java学习——异常与异常处理

    学习这件事不在乎有没有人教你,最重要的是在于你自己有没有觉悟和恒心.--法布尔 一.异常简介 异常:程序出现意外导致中断指令流的一种事件. 异常是一个类,继承于Throwable类,其中包括2个主要大 ...

  4. java 文件解析异常_java中异常的解析

    Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...

  5. e-mobile帐号状态存在异常_Java 常见异常种类

    Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...

  6. java join字符串_Java字符串join()

    java join字符串 Java String join() function is used to join multiple strings to create a new string wit ...

  7. java添加信息_java – 向异常添加信息

    我想向堆栈跟踪/异常添加信息. 基本上我现在有这样的东西,我真的很喜欢: Exception in thread "main" java.lang.ArithmeticExcept ...

  8. java通用异常_Java常用异常整理

    填坑,整理下Java的常用异常.正确使用异常在实际编码中非常重要,但面试中的意义相对较小,因为对异常的理解和应用很难通过几句话或几行代码考查出来,不过我们至少应答出三点:异常类的继承关系.常用异常类. ...

  9. java授查 非授查异常_java检查异常与非检查异常

    Java的可检测异常和非检测异常泾渭分明.可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则. 非检测异常不遵循处理或声明规则.在产生此类异常时,不一定非要采取任何适当 ...

  10. java中断异常_Java中断异常 InterruptedException 的正确处理方式

    你看到这篇文件可能是因为你已经调用了一个抛出 InterruptedException 异常的方法,并且需要以某种方式处理它. 首先,需要了解为一个方法为啥会 throws InterruptedEx ...

最新文章

  1. opencv python全屏显示、置窗口大小和位置
  2. linux挂载efi分区,IBM X3850安装linux出现 您还么有创建/boot/efi分区 解决办法
  3. EXCEL怎么打20位以上的数字?
  4. 额外参数_Pytorch获取模型参数情况的方法
  5. 原创精华:剖析亿级请求下的多级缓存
  6. PHP 编写和使用web服务 第一节
  7. 面试中被问到HashMap的结构,1.7和1.8有哪些区别?这篇做深入分析!
  8. 大数据之-Hadoop3.x_MapReduce_序列化案例Debug调试---大数据之hadoop3.x工作笔记0101
  9. 转载(Asp.net Core 中试使用ZKWeb.System.Drawing)
  10. Win10任务栏卡死情况解决方案
  11. 微软亚洲研究院20年20人
  12. Ruff 将助力广东金融高新区“区块链+”金融科技创新与应用落地
  13. C语言 输入一个不大于五位的数字,先判断是几位数字,然后将其数字顺序输出和逆序输出
  14. [presto(trino)]多种日期写法
  15. 试卷代号:4988 2021年春季学期期末统一考试电子政务概论 试题(开卷)
  16. 18-Ansible常用模块-group模块
  17. Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析
  18. 模糊测试工具-peachFuzzer
  19. 放大器的传递函数_谁惧怕电容负载变化?斩波放大器吗?
  20. 2019.12.29 BMR计算

热门文章

  1. Word控件Spire.Doc 【文档操作】教程(五):在 C#、VB.NET 中合并、设置多个 Word 文档
  2. WordPress 修改自定义文章类型的固定链接结构
  3. Java中的四种引用类型
  4. ubuntu下锁定笔记本的触摸板
  5. 学习开发安卓应用总结(快速了解-从下载软件到开发运行APP)
  6. 荣耀magicbookr7版linux,实测:荣耀MagicBook 2019锐龙R7版快到没朋友
  7. html5 2d变形过渡注意,2D变形(css3)transform
  8. 三星SideSync下载,一个神奇的软件
  9. 编写Shell程序,通过编写完成compress1、decompress1函数,选择“压缩”或“解压”以及输入文件名,来自动完成文件的压缩、解压过程。
  10. .NET学习-using的用法