`
dengyll
  • 浏览: 93696 次
社区版块
存档分类
最新评论

java中对于多线程程序的捕获异常的方案

阅读更多

在并发的情况下,try{}catch{Exception ex}不能捕获一般的异常处理,这会导致在异常产生时会直接将异常输出到控制台或者是用户界面,在java5中加入了一些接口来解决这个问题,下面为简单的事例

 

  1. package com.eric.concurrency;  
  2.   
  3. import java.lang.Thread.UncaughtExceptionHandler;  
  4. import java.util.concurrent.ExecutorService;  
  5. import java.util.concurrent.Executors;  
  6.   
  7. /** 
  8.  * 这个程序主要掩饰了在程序中队Runnable异常的捕获方法 
  9.  *  
  10.  * @author Eric 
  11.  *  
  12.  */  
  13. public class ExceptionThread {  
  14.       
  15.     public static void main(String[] args) {  
  16.         try {  
  17.             CatchException.catchExceptionByUncaughtExceptionHandler();  
  18.             System.out.println("************************************");  
  19.             // CatchException.catchExceptionByCatch();  
  20.         } catch (Exception ex) {  
  21.             // ex.printStackTrace();  
  22.         }  
  23.     }  
  24. }  
  25.   
  26. class ExceptionRunnable implements Runnable {  
  27.     public void run() {  
  28.         throw new RuntimeException("Throw By Runnable");  
  29.     }  
  30.       
  31. }  
  32.   
  33. // 用普通的catch方法捕获  
  34. class CatchException {  
  35.     public static void catchExceptionByCatch() {  
  36.         ExecutorService es = Executors.newCachedThreadPool();  
  37.         es.execute(new ExceptionRunnable());  
  38.           
  39.     }  
  40.       
  41.     /* 
  42.      * use try{} catch{} block can't catch exception from Runnable,to solve the 
  43.      * problem. Thread.UncaughtExceptionHandler is a new interface in Java SE5; 
  44.      * it allows you o attach an exception handler to each Thread object. 
  45.      * Thread.UncaughtExceptionHandler.uncaughtException( ) is automatically 
  46.      * called when that thread is about to die from an uncaught exception. 
  47.      */  
  48.     public static void catchExceptionByUncaughtExceptionHandler() {  
  49.         Thread t = new Thread(new ExceptionRunnable());  
  50.         t.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {  
  51.               
  52.             @Override  
  53.             public void uncaughtException(Thread t, Throwable e) {  
  54.                 System.out.println("Exception:" + e.getMessage() + " was catched");  
  55.             }  
  56.         });  
  57.         t.start();  
  58.     }  
  59. }  

 

分享到:
评论

相关推荐

    java基础,多线程,反射

    首先,我们来讨论Java多线程。多线程允许程序同时执行多个独立的任务,极大地提高了应用程序的效率和响应性。在Java中,可以使用`Thread`类或实现`Runnable`接口来创建线程。线程间通信和同步是多线程编程的关键,...

    Java线程错误捕获工具 CheckThread

    Java线程错误捕获工具CheckThread是一款专为Java开发者设计的实用工具,它主要用于帮助开发者在多线程环境中更有效地捕获和管理错误。在Java编程中,多线程是常见的并发执行方式,但同时也带来了错误处理的复杂性。...

    java多线程聊天室

    1. **Java多线程**:多线程是Java的重要特性之一,它允许程序同时执行多个任务。在聊天室中,每个用户连接都会创建一个独立的线程,以便在不影响其他用户的同时处理该用户的输入和输出。这可以通过实现`Runnable`...

    Java实现多线程远程投屏并打包可执行文件(从代码到.exe)

    1. **Java多线程**: - 在Java中,多线程是通过`Thread`类或实现`Runnable`接口来创建和管理的。多线程允许程序同时执行多个任务,提高系统效率。 - `Thread`类提供了一系列的方法如`start()`用于启动线程,`run()...

    基于多线程的web服务器java源码

    1. **Java多线程基础**:Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。在Web服务器源码中,通常会采用后者,因为这样可以避免单继承的限制,提高代码的可扩展性。 2. **Socket编程**:Web服务器...

    poi多线程大数据导出excel文件.zip

    此外,项目可能还考虑了错误处理和异常捕获,确保在多线程环境中数据的一致性和完整性。这可能涉及到对线程安全的数据结构,如ConcurrentHashMap,以及适当的同步机制,以避免数据竞争。 总之,"poi多线程大数据...

    java多线程、并发及线程池介绍收藏的几篇文档

    Java多线程、并发以及线程池是Java编程中至关重要的概念,特别是在处理高并发、高性能的系统设计时。以下是对这些主题的详细说明: 1. **Java 程序中的多线程** - 多线程允许一个程序同时执行多个任务,提高程序...

    用JAVA实现缓冲多线程无阻塞读取远程文件.pdf

    多线程是Java中实现程序同时执行多个任务的一种方式,可以有效提高程序运行效率。 2. **缓冲**:指明使用了BufferedInputStream类。BufferedInputStream是一个字节流类,它使用缓冲区将数据从另一个输入流中读取...

    Java多线程与线程安全实践-基于Http协议的断点续传.rar

    本实践项目“Java多线程与线程安全实践-基于Http协议的断点续传”聚焦于如何利用Java实现HTTP协议的断点续传功能,并在此过程中深入探讨线程管理和安全性。 首先,多线程是Java中的一个强大特性,它允许程序同时...

    java中的线程休眠例子

    了解和正确使用线程休眠是Java多线程编程的基本功。通过合理的休眠,可以优化程序性能,提高系统资源利用率,确保程序的稳定性和正确性。在实际开发中,应根据具体需求选择合适的线程控制策略,以实现高效的并发...

    Java线程超时监控

    在设计多线程程序时,我们还需要考虑如何优雅地处理超时。例如,确保超时的线程释放了所有已占用的资源,如数据库连接、锁等。此外,对于长时间运行的任务,可以考虑采用中断机制,使任务能够定期检查是否被中断,以...

    java 多线程下载

    在Java多线程下载中,通常我们会将大文件分割成若干小块,每个小块由一个单独的线程负责下载。这样做的好处在于,可以同时下载多个部分,提高下载速度,尤其是在网络条件不稳定时,能避免因某一部分下载失败而需要...

    java多线程处理教学案例

    在Java编程语言中,多线程是并发编程的重要组成...通过这个教学案例,你可以深入了解Java多线程的使用,以及如何在实际场景中运用生产者消费者模式来解决问题。实践这部分知识,将有助于提升你在并发编程领域的技能。

    Java 多线程 设计模式

    以上只是Java多线程设计模式的一些基本概念和常用技术,实际开发中还需要根据具体需求灵活运用,结合设计模式来解决问题。《Java 多线程设计模式》一书的源代码应该涵盖了这些知识点的具体实现,通过阅读和实践,...

    JAVA小程序设计

    6. **多线程**: Java支持多线程编程,这使得程序可以同时执行多个任务。通过实现Runnable接口或继承Thread类,开发者可以创建并管理多个执行线程,提高程序的并发性能。 7. **事件驱动编程**: 在GUI应用程序中,...

    05_ExceptionAndThread_java线程和异常方法_

    在Java编程语言中,线程和异常处理是两个至关重要的概念,它们对于任何开发者来说都是必须掌握的基础知识。本文将深入探讨"05_ExceptionAndThread_java线程和异常方法_"这个主题,帮助你巩固和深化对这两个核心概念...

    java 程序设计思想

    4. **异常处理(Exception Handling)**:Java强制要求程序员处理可能出现的异常,通过try-catch-finally结构来捕获和处理错误,提高程序的健壮性。 5. **垃圾回收(Garbage Collection)**:Java的自动内存管理...

    Java多线程之龟兔赛跑

    在这个"Java多线程之龟兔赛跑"的例子中,我们看到了如何使用Java的Thread类来创建和管理线程,模拟经典的寓言故事——龟兔赛跑。 首先,我们创建了一个名为`WuguiThread`的类,它继承自`Thread`。这个类代表乌龟...

    java面试题_多线程(68题)

    Java多线程是Java编程中的核心概念,尤其在面试中,它是考察开发者高级技能和并发理解的关键领域。这里,我们将深入探讨与Java多线程相关的68个面试问题,涵盖基础知识、线程安全、同步机制、线程池、死锁等关键知识...

Global site tag (gtag.js) - Google Analytics