package org.anicloud.concurrency;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
/**
* Created by zhaoyu on 15-4-9.
*/
class ExceptionThread2 implements Runnable {
@Override
public void run() {
Thread t = Thread.currentThread();
System.out.println("run() by " + t);
System.out.println(
"eh = " + t.getUncaughtExceptionHandler()
);
throw new RuntimeException();
}
}
class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("caught " + e);
}
}
class HandlerThreadFactory implements ThreadFactory {
@Override
public Thread newThread(Runnable r) {
System.out.println(this + " creating new Thread.");
Thread thread = new Thread(r);
System.out.println("created " + thread);
thread.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
System.out.println("eh = " + thread.getUncaughtExceptionHandler());
return thread;
}
}
public class CaptureUncaughtException {
public static void main(String[] args) {
// set default exception handler
// Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
ExecutorService executorService = Executors.newCachedThreadPool(new HandlerThreadFactory());
executorService.execute(new ExceptionThread2());
}
}
分享到:
相关推荐
本文将深入探讨Java多线程中的异常捕捉,以及如何有效地在多线程环境中处理异常。 首先,让我们明确一点:Java的多线程不允许未捕获的checked异常直接抛出。这意味着每个线程都必须负责处理自己产生的异常,而不是...
下面将详细解析与“java笔记 异常 多线程”相关的知识点,包括异常处理的基本概念、如何捕捉和抛出异常、自定义异常的创建,以及这些知识点在实际编程中的应用。 ### Java异常处理 Java异常处理是Java语言的一个...
Java多线程编程安全退出线程方法介绍 Java多线程编程安全退出线程方法的重要性在于确保线程的资源正确释放,避免程序工作在不确定的状态下。以下是Java多线程编程安全退出线程方法的知识点: 1. Thread.stop()方法...
总结来说,"Thread捕捉异常示例"主要涉及了在Java多线程环境中如何有效地管理和处理线程中的异常。通过设置自定义的未捕获异常处理器,我们可以确保即使线程出现异常,也能按照预定的方式进行处理,避免程序的意外...
"Java 多线程实验报告" Java 多线程是指在一个程序中可以并发执行多个线程,以提高程序的执行效率和响应速度。...本实验报告展示了Java多线程的基本概念和实现方法,并展示了多线程的优点和缺点。
### Java多线程与并发(14-26)-JUC集合-CopyOnWriteArrayList详解 #### 一、概述 `CopyOnWriteArrayList`是一种线程安全的集合类,它是`ArrayList`的一种特殊版本,主要通过复制底层数组的方式来保证线程安全性。...
其次,"线程异常示范"涉及到多线程编程。在多线程环境下,每个线程都有可能独立地抛出异常。因此,正确处理线程异常是非常重要的。Java、C#等语言提供了线程局部异常处理机制,如try-catch-finally结构,可以在特定...
异常并不等同于错误,它更多地指向那些虽然意外却可以预见并处理的情况,如尝试除以零、试图访问不存在的文件等。 #### 异常示例 以下是一个简单的异常示例: ```java public class ExceptionTest { int a = 10 / ...
本文档概括了Java笔试题,涵盖了Java的基础知识、Java集合框架、Spring框架、J2EE事务、Java多线程、UML类图等多个方面的知识点。 访问权限控制 在Java中,存在五种访问权限控制等级,从最宽松到最严格控制等级...
`catch`块用于处理特定类型的异常,可以有多个`catch`块,处理不同类型的异常,顺序通常是先子类后父类,以便更具体异常优先被捕获。`finally`块无论是否发生异常都会被执行,常用于资源的清理工作。 异常处理的三...
- **Error类**:由Java虚拟机生成并抛出,通常表示严重问题,如内存不足或线程死锁,这类异常通常不需要程序员去处理。 - **Exception类**:由Java程序抛出并处理的对象。`Exception`类又进一步分为几个子类: - `...
在Java编程语言中,线程错误捕获是一个关键的议题,因为多线程环境下的程序可能会遇到各种不可预见的问题,如死锁、竞态条件、线程安全问题等。"CheckThread"是一个专为Java开发者设计的源码工具,旨在帮助开发者更...
javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip ...
多个catch块可以捕获不同类型的异常,使得程序可以根据不同类型的异常采取不同的处理策略。finally块则确保无论是否发生异常,某些代码(如资源清理)总会被执行。 在Java中,抛出异常使用`throw`关键字。例如,...
javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip ...
JAVA 实验报告 本报告是对 JAVA 实验报告的总结,涵盖了多个方面的知识点。...这些实验为我们提供了一个系统的 Java 编程入门指南,从基本的安装和配置到面向对象编程和多线程编程,涵盖了 Java 编程的多个方面。