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 ...
随机推荐
- mysql 启动报错
之前用我这个机器做mysql的测试来,今天启动准备搭建一套线上的主从,结果起不来了... 错误日志: ;InnoDB: End of page dump 170807 11:37:02 InnoDB: ...
- 在linux下PHP和Mysql环境搞事情
研发部门同事开发了一个接口管理辅助工具Shepherd,要求搭建在内网环境中,遇到点小问题记一下. 将开发的文件上传只web目录下,更改数据库ip,可以正常打开 登陆用户信息,此时需要连接数据库来验证 ...
- Samba共享权限分配
案例推荐:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 本文不详细介绍全部参数,只介绍完成需求的一些参数. 需求: 1,账 ...
- str和repr
在Python2.6和Python3.0以及更早的版本中,在交互式模式下的输出本质上是使用repr,因此对于一些浮点数运算,会显示很多位: 4 / 5.0 #0.8000000000000004 但是 ...
- 将MathType公式转换为LaTex格式
LaTex编辑公式不够直观,常常会因为结构复杂导致数据或者符号出错,使用MathType编辑公式后再直接转换成LaTex代码可以避免这个问题. 一.首先在MathType中编辑公式 二.然后点击参数— ...
- Scala快速入门-基本数据结构
模式匹配 使用用模式匹配实现斐波那契 def fibonacci(in: Any): Int = in match { case 0 => 0 case 1 => 1 case n: In ...
- linux 相关的问题
1,查找当前目录下的文件名,并重定向到文件t中 ls > t mac 下快速补全目录名快捷键tab
- android异常Unable to instantiate activity ComponentInfo解决方法
我是下面提到的第四条: 在Order and Export 中 把新加的 android-support-v4.jar的前面的对号打上勾 保存:就可以了: 做android开发的可能都碰到" ...
- [剑指Offer] 45.扑克牌顺子
题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决 ...
- Python文件传输模块ftplib
ftplib是基于FTP协议实现的一个Python模块 from ftplib import FTP # 创建一个FTP连接对象 ftp = FTP() #[ 当带有参数时,即:ftp = FTP(h ...