java join 异常_java-forkjoin异常返回
来自: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异常返回相关推荐
- java 运行异常处理_Java编程异常处理和I/O流
重点: 1.在编写程序时,要正确地使用捕获例外和声明抛出异常的两种例外处理的方法. 2.遇到实际问题时,要根据需要正确使用各种输入/输出流,特别是对中文使用适当的字符输入流. 3.正确使用对象串行化的 ...
- java异常_Java的异常体系
保证程序的健壮性 java异常体系 error:比如栈内存溢出(StackOverError) Exception这种异常又分为两类:运行时异常和编译异常. 1.运行时异常(逻辑异常):代码不规范引起 ...
- java 异常_Java学习——异常与异常处理
学习这件事不在乎有没有人教你,最重要的是在于你自己有没有觉悟和恒心.--法布尔 一.异常简介 异常:程序出现意外导致中断指令流的一种事件. 异常是一个类,继承于Throwable类,其中包括2个主要大 ...
- java 文件解析异常_java中异常的解析
Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...
- e-mobile帐号状态存在异常_Java 常见异常种类
Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...
- java join字符串_Java字符串join()
java join字符串 Java String join() function is used to join multiple strings to create a new string wit ...
- java添加信息_java – 向异常添加信息
我想向堆栈跟踪/异常添加信息. 基本上我现在有这样的东西,我真的很喜欢: Exception in thread "main" java.lang.ArithmeticExcept ...
- java通用异常_Java常用异常整理
填坑,整理下Java的常用异常.正确使用异常在实际编码中非常重要,但面试中的意义相对较小,因为对异常的理解和应用很难通过几句话或几行代码考查出来,不过我们至少应答出三点:异常类的继承关系.常用异常类. ...
- java授查 非授查异常_java检查异常与非检查异常
Java的可检测异常和非检测异常泾渭分明.可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则. 非检测异常不遵循处理或声明规则.在产生此类异常时,不一定非要采取任何适当 ...
- java中断异常_Java中断异常 InterruptedException 的正确处理方式
你看到这篇文件可能是因为你已经调用了一个抛出 InterruptedException 异常的方法,并且需要以某种方式处理它. 首先,需要了解为一个方法为啥会 throws InterruptedEx ...
最新文章
- opencv python全屏显示、置窗口大小和位置
- linux挂载efi分区,IBM X3850安装linux出现 您还么有创建/boot/efi分区 解决办法
- EXCEL怎么打20位以上的数字?
- 额外参数_Pytorch获取模型参数情况的方法
- 原创精华:剖析亿级请求下的多级缓存
- PHP 编写和使用web服务 第一节
- 面试中被问到HashMap的结构,1.7和1.8有哪些区别?这篇做深入分析!
- 大数据之-Hadoop3.x_MapReduce_序列化案例Debug调试---大数据之hadoop3.x工作笔记0101
- 转载(Asp.net Core 中试使用ZKWeb.System.Drawing)
- Win10任务栏卡死情况解决方案
- 微软亚洲研究院20年20人
- Ruff 将助力广东金融高新区“区块链+”金融科技创新与应用落地
- C语言 输入一个不大于五位的数字,先判断是几位数字,然后将其数字顺序输出和逆序输出
- [presto(trino)]多种日期写法
- 试卷代号:4988 2021年春季学期期末统一考试电子政务概论 试题(开卷)
- 18-Ansible常用模块-group模块
- Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析
- 模糊测试工具-peachFuzzer
- 放大器的传递函数_谁惧怕电容负载变化?斩波放大器吗?
- 2019.12.29 BMR计算
热门文章
- Word控件Spire.Doc 【文档操作】教程(五):在 C#、VB.NET 中合并、设置多个 Word 文档
- WordPress 修改自定义文章类型的固定链接结构
- Java中的四种引用类型
- ubuntu下锁定笔记本的触摸板
- 学习开发安卓应用总结(快速了解-从下载软件到开发运行APP)
- 荣耀magicbookr7版linux,实测:荣耀MagicBook 2019锐龙R7版快到没朋友
- html5 2d变形过渡注意,2D变形(css3)transform
- 三星SideSync下载,一个神奇的软件
- 编写Shell程序,通过编写完成compress1、decompress1函数,选择“压缩”或“解压”以及输入文件名,来自动完成文件的压缩、解压过程。
- .NET学习-using的用法