gpt4 book ai didi

java - 什么可能导致此 Java 未捕获错误

转载 作者:行者123 更新时间:2023-12-01 07:33:21 25 4
gpt4 key购买 nike

我有一个多线程 Java 程序。主线程在第二个线程中执行如下代码,第二个线程结束。

try{
System.out.println(1); //prints
doSomething();
System.out.println(2); //doesn't print
} catch(Throwable t) {
System.out.println(3); //doesn't print
}

我运行这段代码,在极少数情况下,我看到 1 转到控制台,而 23 不存在。所以看起来 doSomething 正在抛出某种错误导致线程停止。这种情况发生的概率约为 0.5%。既然不是 Throwable 导致线程终止,那么可能发生了什么?

主线程在第二个线程停止后继续愉快地继续。

这是我用来创建和运行第二个线程的代码。

Runnable secondThread = new Runnable() { ... }
ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(1);
threadPoolExecutor.execute(secondThread);

编辑:doSomething 是对外部网站的 REST API 的调用。

最佳答案

听起来 doSomething 并没有终止。由于您调用外部服务,它可能会挂起。请执行下列操作:调用jps它在java所在的同一目录中。它为您提供了所有 Java 进程的列表。然后调用jstack进程号

关于java - 什么可能导致此 Java 未捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59755898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com