Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java线程异常终止,异常消息为null。_Java_Windows_Multithreading - Fatal编程技术网

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

Java线程异常终止,异常消息为null。,java,windows,multithreading,Java,Windows,Multithreading,我正在尝试使用Java的执行器执行一个多线程程序。执行时,java线程异常终止。我通过try-catch捕获了异常,但是,异常中没有消息(null) 失败是随机的,但是我“怀疑”失败是在我在该线程中进行了函数调用之后发生的。我试图将线程堆栈大小增加到1024/2048,但结果保持不变 有人能指出这里要采用的调试方法吗。因为,我没有关于异常的信息,所以我无法继续 我在Windows 64位环境下工作,使用java 1.6,同时使用Executors类创建线程池,使用接受ThreadFactory的

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

失败是随机的,但是我“怀疑”失败是在我在该线程中进行了函数调用之后发生的。我试图将线程堆栈大小增加到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;
}

请告诉我们异常类名(如
NullPointerException
)。堆栈跟踪也可能有帮助。您可能遇到了NullPointerException。你能在这里发布一部分代码吗?你可以用它来获取堆栈跟踪:。。。catch(异常e){e.printStackStrace();}我后来发现其中一个被调用的例程在NPE中失败,尽管线程堆栈跟踪没有显示它是NPE,而NPE正在杀死它。printStackTrace不适用于线程。谢谢,这看起来是一个很好的编程实践,尤其是对于内层子例程中的未捕获异常。要提供更多详细信息,通过ExecutorService提交的任务被包装到FutureTask中,FutureTask捕获Throwable并通过FutureTask#get()提供异常;所以这个练习真的很有意义。谢谢!我们还发现,同样的未来任务也会有一个超时。我一直在找这个,很久了!!谢谢@悉达多·尚卡兰也许你可以接受这个答案;-)