java - Executor、线程池的捕获异常

标签 java multithreading exception jvm

对于一个线程,我通过以下代码段捕获未捕获的异常。但是,对于 ExecutorService executor = Executors.newFixedThreadPool(10);,如何捕获未捕获的异常?

Thread.UncaughtExceptionHandler h = new Thread.UncaughtExceptionHandler() {
    public void uncaughtException(Thread th, Throwable ex) {
        System.out.println("Uncaught exception: " + ex);
    }
};

最佳答案

您可以使用方法newFixedThreadPool的重载,该方法接受ThreadFactory:

Thread.UncaughtExceptionHandler eh = ...;
ThreadFactory factory = r -> {
    Thread t = new Thread(r);
    t.setUncaughtExceptionHandler(eh);
    return t;
};
ExecutorService executor = Executors.newFixedThreadPool(10, factory);

关于java - Executor、线程池的捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105323/

相关文章:

java - 如何将驱动程序声明为全局驱动程序?

java - 一个好的初学者图文教程?

javascript - 在 Node.js 中实现锁

Python:如何在每次输出而不是终止时获取子进程的输出?

java - 如何在线程中使用带参数的方法?

.net - 如何调试 "Safe handle has been closed"错误

python异常属性错误: "' NoneType' object has no attribute 'var' "

java - Android 中异步抛出异常

java - java中将字符串转换为二维数组

java - 如何复制不同接口(interface)实例的行为?