java ThreadPoolExecutor 异常捕获
一,创建一个线程池
其中:
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor)
饱和策略执行时的具体逻辑。
protected void afterExecute(Runnable r, Throwable t)
异常后的具体逻辑。
package com.kintech.scanAF.common; import com.kintech.common.utils.log.LogerHelper;
import java.util.concurrent.*; /**
* @author Tyler
* @date 2019/9/12
*/
public class ThreadHelper {
//初始化线程池
private static final ExecutorService pool = new ThreadPoolExecutor(
2,
5,
60,
TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(10),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.DiscardPolicy(){
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
LogerHelper.Write("--- "+this.getClass().getName()+"\r\n--- 队列已满,请稍后再来");
}
})
{
@Override
protected void afterExecute(Runnable r, Throwable t) {
super.afterExecute(r, t);
LogerHelper.Write(t.getMessage());
System.out.println(t.getMessage());
}
}; /**
* 执行线程池方法(方法在RunnableFunc文件夹中)
* @param run
*/
public static void execute(Runnable run)
{
pool.execute(run);
}
/**
* 执行线程池方法(方法在RunnableFunc文件夹中)
* @param run
*/
public static Future<?> submit(Runnable run)
{
Future<?> future = pool.submit(run);
return future;
} }
线程池的参数介绍:
public ThreadPoolExecutor(
int corePoolSize, // 线程数量
int maximumPoolSize, // 最大线程数量
long keepAliveTime, // 线程存活时间
TimeUnit unit, //时间单位
BlockingQueue<Runnable> workQueue, // 任务队列
ThreadFactory threadFactory, // 线程创建工厂,可以给线程起名字
RejectedExecutionHandler handler) // 饱和策略
二,创建任务
package com.kintech.scanAF.common.RunnableFunc; /**
* @author Tyler
* @date 2019/9/12
*/
public class Test implements Runnable {
private String a;
public Test(String a)
{
this.a=a;
} @Override
public void run() {
try
{
throw new RuntimeException( "Service has error !");
}
catch (Exception e) {
throw e;
}
finally
{
a=null;
} }
}
三,调用并获取异常
public void MainTest(String a) throws IOException {
Future<?> future = ThreadHelper.submit(new Test(a));
try {
future.get();
}
catch (Exception ex)
{
//记录日志
LogerHelper.Write(ex.getMessage());
//swing弹窗
JOptionPane.showMessageDialog(null, ex.getMessage(), "Message", JOptionPane.ERROR_MESSAGE);
}
}
java ThreadPoolExecutor 异常捕获的更多相关文章
- java代码异常捕获throws抛出异常
总结:Throwable 是所以异常的父类.error和Exception是继承它的类 Exception: 这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环 ...
- java多线程异常捕获
java多线程中出现了异常,如何捕获.利用UncaughtExceptionHandler这个接口就可以了. 代码如下: package com.ming.thread.six.threadcreat ...
- java controller 异常捕获
package com.aiyusheng.framework.exception; import lombok.Data; /** * base异常类 * @author :cza * @date ...
- java 异常捕获小记
java 中异常捕获常用的为: try{ //业务代码 }catch(Exception e){ //异常捕获 }finally{ // 不管有无异常, 最后都会执行到这里 } 在方法体内如果想要把异 ...
- [javaSE] 异常捕获
异常:程序在运行时出现的不正常现象 Throwable |——Error |——Exception 严重级别:Error类和Exception类 异常的处理:try{}catch{}finally{} ...
- JAVA并发,线程异常捕获
由于线程的特性,当我们启动了线程是没有办法用try catch捕获异常的,如下例: package com.xt.thinks21_2; import java.util.concurrent.Exe ...
- java异常捕获的一点感悟
class Annoyance extends Exception {} class Sneeze extends Annoyance {} class Human { public static v ...
- 有关于异常捕获点滴,plus我也揭揭java的短
▄︻┻┳═一『异常捕获系列』Agenda: ▄︻┻┳═一有关于异常捕获点滴,plus我也揭揭java的短 ▄︻┻┳═一根据异常自定义处理逻辑([附]java异常处理规范) ▄︻┻┳═一利用自定义异常来 ...
- Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程
Java并发-UncaughtExceptionHandler捕获线程异常信息并重新启动线程 一.捕获异常并重新启用线程 public class Testun { public static voi ...
随机推荐
- Json解析之FastJson
版权声明:转载请注明出处 https://blog.csdn.net/heqiangflytosky/article/details/37659943 1.FastJson介绍 FastJson是阿里 ...
- 微服务-技术专区-链路追踪(pinpoint)-部署使用
https://naver.github.io/pinpoint/ https://github.com/naver/pinpoint 背景 随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越 ...
- LLppdd has a dream!
LLppdd has a dream Time Limit: 3 s Memory Limit: 256 MB 题目背景 LLppdd经过他充满坎坷的初三后,他的成绩也充满了坎坷. 临近中考了,他希望 ...
- Java之有名内部类和匿名内部类
Java内部类 定义在外部类中的类就是内部类:内部类的定义是为了更清楚.详细地描述事物. 有名内部类和匿名内部类 Java语言根据内部类是否有类名将内部类分为有名内部类和匿名内部类(没有类名). 有名 ...
- EcShop二次开发学习方法和Ecshop二次开发必备基础
ecshop二次开发学习方法 近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟.这时催生出了众多电子商务相关的php开源产品.B2C方面有Ecshop ...
- css创建
CSS 创建 当读到一个样式表时,浏览器会根据它来格式化 HTML 文档. 如何插入样式表 插入样式表的方法有三种: 外部样式表(External style sheet) 内部样式表(Interna ...
- Delphi 获取系统当前进程、窗口句柄、文件属性以及程序运行状态
uses TLHelp32,PsAPI;(1)显示进程列表: procedure TForm1.Button2Click(Sender: TObject); var lppe: TProcessEnt ...
- 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)
Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...
- [bzoj3073] Journeys 题解(线段树优化建图)
Description Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建 ...
- 三:robotframework框架配合selenium之jquery定位
RF框架我用的比较多,限于自己的代码水平,目前工作中一直是用RF框架.unittest框架,我也练习了很久,还差一点封装的技巧与设计模式的学习.所以不敢在项目中实践. 等明年我的代码水平再上升一个台阶 ...