• java并发--捕获线程异常


    由于线程的本质特性,使得不能捕获从线程中逃逸的异常。一旦异常逃出任务的main()方法,就会传播到控制台中,main方法中try-catch也是没有作用的。

    这就使用到Thread.UncaughtExcuptionHandler接口,这个接口允许没个Thread对象附着一个异常处理器。

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ThreadFactory;
    
    public class ExceptionDemo  {
        class myRunnalbe implements Runnable{
    
            @Override
            public void run() {
                System.out.println("thread:" + Thread.currentThread());
                throw new RuntimeException();// 抛出一个异常
            }
            
        }
        
        class myUncaughtExcuptionHandler implements Thread.UncaughtExceptionHandler {
            /**
             * 处理异常
             */
            @Override
            public void uncaughtException(Thread t, Throwable e) {
                System.out.println("Exception::" + e);
            }
        }
        /**
         * 线程工厂
         * @author Administrator
         *
         */
        class myThreadFactory implements ThreadFactory {
    
            @Override
            public Thread newThread(Runnable r) {
                Thread t = new Thread(r);
                t.setUncaughtExceptionHandler(new myUncaughtExcuptionHandler());// 设置一个异常处理器
                System.out.println("eh::" + t.getUncaughtExceptionHandler());
                return t;
            }
        }
        
        public static void main(String[] args) {
            ExceptionDemo demo = new ExceptionDemo();
            ExecutorService executor = Executors.newCachedThreadPool(demo.new myThreadFactory());
            executor.execute(demo.new myRunnalbe());
        }
    }

    这就是可以抓获异常。

  • 相关阅读:
    java微信开发
    LeetCode题目解答
    LeetCode 题目总结/分类
    http://baldtheme.com/theme/cleanizr/html/ 类似于这样的
    发现UC/OS-III源码有一处不明白!会不会是BUG.高手过来看看!
    hibernate hbm2ddl auto 不能创建表的问题
    Can jxta be used to develop online card game (p2p style)?
    父子对等组之间的关系
    WScript中调用js方法
    7-wonders-in-java
  • 原文地址:https://www.cnblogs.com/a-bird/p/3610391.html
Copyright © 2020-2023  润新知