我正在尝试使用 Java 的执行器来执行多线程程序。执行时,java 线程异常终止。我通过 try-catch 捕获了异常,但是,异常中没有消息(空)。
失败是随机的,但是我“怀疑”失败是在我在该线程中进行函数调用之后发生的。我尝试将线程堆栈大小增加到 1024/2048 ,但结果保持不变。
有人可以指出这里要采用的调试方法吗?因为,我没有有关异常的信息,所以无法继续处理。
我在 Windows 64 位环境中工作,使用 java 1.6
最佳答案
使用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;
}
关于Java 线程异常终止并出现消息为 null 的异常。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562595/