gpt4 book ai didi

java - 关于线程死亡或泄漏的查询

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

假设在我的应用程序中,一个线程正在执行以下函数:

public void function(){
.
.
.
try{
//do something
}catch(Exception ex){
throw ex;
}

}

现在,每次线程执行该函数时,它都会进入catch block ,然后抛出异常ex,甚至父函数也会向其父函数抛出异常。现在的问题是我的线程会死掉还是会导致 mu 应用程序中的线程泄漏?

最佳答案

线程将正常终止,但问题是它不会释放异常发生时它所持有的任何资源。

示例:

public class TryThreads {
static void someMethod() throws Exception {
System.out.println("hello");
throw new Exception();
}

public static void main(String[] args) throws InterruptedException {

Thread T = new Thread(new Runnable() {

@Override
public void run() {
System.out.println(Thread.currentThread().getState());
try {
someMethod();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("still here");
}

});
T.start();
Thread.currentThread().sleep(1000);
System.out.println(T.getState());
}
}

操作:

RUNNABLE
hello
java.lang.Exception
at TryThreads.someMethod(TryThreads.java:4)
at TryThreads$1.run(TryThreads.java:15)
at java.lang.Thread.run(Unknown Source)
still here
**TERMINATED** --> this line

关于java - 关于线程死亡或泄漏的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405449/

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