Java线程异常终止,异常消息为null。

时间:2012-03-05 06:41:07

标签: java windows multithreading

我正在尝试使用Java的Executors执行多线程程序。执行时,java线程异常终止。我通过try-catch捕获了异常,但异常中没有消息(null)。

失败是随机的,但我“怀疑”在我在该线程中进行函数调用后发生了失败。我试图将线程堆栈大小增加到1024/2048,但结果保持不变。

有人可以指出这里采用的调试方法。因为,我没有关于异常的信息,我无法继续使用它。

我在Windows 64位环境中使用java 1.6

1 个答案:

答案 0 :(得分:1)

使用Executors类创建线程池时,使用接受ThreadFactory的方法;示例ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)。 在ThreadFactory的实现中,分配一个UncaughtExceptionHandler;以下示例

public final Thread newThread(final Runnable r) {
    Thread newThread = threadFactory.newThread(r); // you can use default thread factory
    newThread.setName("threadName");
    newThread.setDaemon(Boolean.TRUE);
    newThread.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(final Thread t, final Throwable e) {
            // log
        }
    });
    return newThread;
}