java主线程捕获子线程中的异常
本文主要参考:《think in java》
好,下面上货。
-
package com.xueyou.demo.theadexceptiondemo;
-
-
public class ThreadExceptionRunner implements Runnable{
-
@Override
-
public void run() {
-
throw new RuntimeException("error !!!!");
-
}
-
}
-
package com.xueyou.demo.theadexceptiondemo;
-
-
import com.sun.glass.ui.TouchInputSupport;
-
-
import java.util.concurrent.ExecutorService;
-
import java.util.concurrent.Executors;
-
import java.util.concurrent.ThreadFactory;
-
-
public class ThreadExceptionDemo {
-
public static void main(String[] args) {
-
try {
-
Thread thread = new Thread(new ThreadExceptionRunner());
-
thread.start();
-
} catch (Exception e) {
-
System.out.println("========");
-
e.printStackTrace();
-
} finally {
-
}
-
System.out.println(123);
-
}
-
}
-
package com.xueyou.demo.theadexceptiondemo;
-
-
import com.sun.glass.ui.TouchInputSupport;
-
-
import java.util.concurrent.ExecutorService;
-
import java.util.concurrent.Executors;
-
import java.util.concurrent.ThreadFactory;
-
-
public class ThreadExceptionDemo {
-
public static void main(String[] args) {
-
try {
-
Thread thread = new Thread(new ThreadExceptionRunner());
-
thread.start();
-
} catch (Exception e) {
-
System.out.println("========");
-
e.printStackTrace();
-
} finally {
-
}
-
System.out.println(123);
-
ExecutorService exec = Executors.newCachedThreadPool(new HandleThreadFactory());
-
exec.execute(new ThreadExceptionRunner());
-
exec.shutdown();
-
}
-
}
-
-
class MyUncaughtExceptionHandle implements Thread.UncaughtExceptionHandler {
-
@Override
-
public void uncaughtException(Thread t, Throwable e) {
-
System.out.println("caught " + e);
-
}
-
}
-
-
class HandleThreadFactory implements ThreadFactory {
-
@Override
-
public Thread newThread(Runnable r) {
-
System.out.println("create thread t");
-
Thread t = new Thread(r);
-
System.out.println("set uncaughtException for t");
-
t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandle());
-
return t;
-
}
-
-
}
-
package com.xueyou.demo.theadexceptiondemo;
-
-
import com.sun.glass.ui.TouchInputSupport;
-
-
import java.util.concurrent.ExecutorService;
-
import java.util.concurrent.Executors;
-
import java.util.concurrent.ThreadFactory;
-
-
/**
-
* Created by wuxueyou on 2018/6/24.
-
*/
-
public class ThreadExceptionDemo {
-
public static void main(String[] args) {
-
try {
-
Thread thread = new Thread(new ThreadExceptionRunner());
-
thread.start();
-
} catch (Exception e) {
-
System.out.println("========");
-
e.printStackTrace();
-
} finally {
-
}
-
System.out.println(123);
-
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandle());
-
// ExecutorService exec = Executors.newCachedThreadPool(new HandleThreadFactory());
-
ExecutorService exec = Executors.newCachedThreadPool();
-
exec.execute(new ThreadExceptionRunner());
-
exec.shutdown();
-
-
}
-
}
-
java主线程捕获子线程中的异常的更多相关文章
- Java主线程等待子线程、线程池
public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...
- python主线程捕获子线程异常
python内置threading.Thread类创建的子线程抛出的异常无法在主线程捕获,可以对该类进行优化,为子线程添加exit code属性,主线程通过获取子线程的返回状态,来判断子线程中是否发生 ...
- Java主线程在子线程执行完毕后再执行
一.join() Thread中的join()方法就是同步,它使得线程之间由并行执行变为串行执行. public class MyJoinTest { public static void main( ...
- 线程:Java主线程等待子线程结束
使用Thread.join()方法: public class App { public static void main(String[] args) { testMain(); } public ...
- 验证:java 主线程在子线程结束后才会结束
package com.idealisan.test; /** * Hello world! * */ public class App { public static void main( Stri ...
- Java多线程之以7种方式让主线程等待子线程结束
记一次主线程等待子线程结束的多种方法的学习 在学习多线程时,最开始遇到的问题其实是"计算子线程运行时间",写到最后发现本文和标题更为符合,但是仍然基于问题:"在主线程中获 ...
- JAVA进阶----主线程等待子线程各种方案比较(转)
创建线程以及管理线程池基本理解 参考原文链接:http://www.oschina.net/question/12_11255?sort=time 一.创建一个简单的java线程 在 Java 语言中 ...
- Java并发编程原理与实战六:主线程等待子线程解决方案
本文将研究的是主线程等待所有子线程执行完成之后再继续往下执行的解决方案 public class TestThread extends Thread { public void run() { Sys ...
- java多线程实现主线程等待子线程执行完问题
本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明: 1.使用Thread的join()方法,join()方法会阻塞主线程继续向下执行. 2.使用Java.util.concurrent中的C ...
随机推荐
- 虚拟机下 rm -rf / 尝试
环境:虚拟机 系统版本:centOS 5.8.centOS 6.5 1. root权限:rm -rf / 2. root权限:rm -rf /* 测试结果:5.8下执行命令1,2,根目录文件被删除,系 ...
- 2.安装hdfs yarn
下载hadoop压缩包设置hadoop环境变量设置hdfs环境变量设置yarn环境变量设置mapreduce环境变量修改hadoop配置设置core-site.xml设置hdfs-site.xml设置 ...
- 小茜(xi)的减肥之路
Description 今天,多年未见的小钧和小江在街头偶遇,小江想看看当年那个蠢蠢的小钧有没有变聪明一些,他灵机一动,说:“当初小茜立了个flag,说一定要减肥,她想着第一天跑一米,第二天跑两米,第 ...
- 视频播放截图及简要文字介绍——Thunder团队
视频播放截图及简要文字介绍 图一:团队Logo ——从此我们有了自己的标志 图二:扫描本地书籍 ——可阅读本地的喜爱书籍 图三:在本地添加自己喜爱的图书 ——将自己喜爱的书籍加入书架,方便阅读 图四: ...
- object-oriented 第二次作业(2)
面向对象程序设计自学计划 由于我的英文实在是很差,所以我就没有去考虑看英文的课程视频.网络上的课程有很多,什么学校的也有,一开始我不知道该如何开始选择课程.感觉每个都还可以.后来在群里的看到别人推荐的 ...
- ASP.NET 使用MVC4的EF5 Code First 入门(一):创建数据库
一.基本流程 建立模型→建立控制器→EF框架自动生成视图的数据库 二.基本理论 1.约定优于配置(Convention Over Configuration) 设计不好的框架通常需要多个配置文件,每一 ...
- ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 表被锁的解决办法
转自:https://blog.csdn.net/mchdba/article/details/38313881 前言:朋友咨询我说执行简单的update语句失效,症状如下:mysql> upd ...
- dpr dproj 扩展名区别,dprdproj
这段时间用xe6,看了下目录下生成的一些文件,因为隐藏了扩展名,看到两个名字一样的文件,右键属性看了下,同名但扩展名不同,百度了下区别,没有找到答案,问群里的朋友才知道区别,特此记录下来: dpr:D ...
- Python基础教程系列目录,最全的Python入门系列教程!
Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 在现在的工作及开发当中,Python的使用越来越广泛,为了方便大家的学习,Linux大学 特推出了 <Python基 ...
- Python字符串的简单操作
数据的操作 字符串的一些常用操作: 1 1 #!/usr/bin/env python 2 # #coding=utf-8 3 # 4 # test='hello world' 5 # print(t ...