处理多个正在运行的线程Java上的异常

时间:2013-06-06 10:25:54

标签: java multithreading exception

我正在开发一个java应用程序我想知道如何处理多个正在运行的线程上的异常。有什么例子吗?谢谢

1 个答案:

答案 0 :(得分:0)

如果我正确地理解了你的问题,你会问如何检测该线程是否由于未处理的异常而完成。

您需要为此实施UncaughtExceptionHandler。您可以在执行处理程序时添加的最简单有用的活动是记录未捕获的异常。

此示例的一个示例与Executor一起使用:

    final Thread.UncaughtExceptionHandler DEFAULT_HANDLER = new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            log.error("", e);
        }
    };

    ExecutorService executorService = Executors.newCachedThreadPool(new ThreadFactory() {
        @Override
        public Thread newThread(Runnable r) {
            Thread t = new Thread(r);
            t.setUncaughtExceptionHandler(DEFAULT_HANDLER);
            return t;
        }
    });

    executorService.execute(new Runnable() {
        @Override
        public void run() {
            throw new RuntimeException("log me");
        }
    });