java - 有没有办法确认线程在执行结束时是否被杀死?

标签 java

有什么方法可以确认线程在执行结束时是否被杀死?如果垃圾收集器需要很长时间才能销毁线程,即使它们可供 GC,也可能会出现内存不足异常。要消除此类问题,最好知道线程是否已被破坏。

到目前为止,我的理解是,在 run 方法结束时,线程被杀死,我们不需要显式地执行任何操作来杀死线程实例。

提前致谢!

class A
{
    public static void main()
    {
        Thread t = new Thread(new TestA());
         t.start();
        Thread t1 = new Thread(new TestB());
         t1.start();
        Thread t2 = new Thread(new TestC());
         t2.start();
    }
}
class TestA implements Runnable {
Thread t;

    public void run() {
           for(...){
           try{

           }catch()
           {
            ....
           }
           } 
        }

 }

最佳答案

您说的完全正确:“在 run 方法结束时,线程被终止,我们不需要显式执行任何操作来终止线程实例”。通常,只需让线程离开其 run() 方法就足够了。

如果您想确保特定线程已终止,则 Thread.isAlive()将检查,并且 Thread.join()会等到它发生。如果您担心一组特定的线程,请在某处保留对它们的引用,并使用这些方法检查它们。

关于java - 有没有办法确认线程在执行结束时是否被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672123/

相关文章:

java - 为什么 getRemoteHost() 在部署应用程序时返回 IP 地址?

java - 在不创建字符串的情况下将数组更改为字符串

java - 使用星号向前和向后打印直角三角形?

java - 设置24 :00 as java time

java - 在Jfreechart中更改图形的X轴起始值

java - 为什么 MultiMap 中不保留插入顺序?

java - 在 JavaEE 中使用 @Inject 注解时出现 NullPointerException

java - 是否可以直接在 Spark worker 中创建变量?

java - 安卓)java.lang.NoClassDefFoundError : com. google.android.gms.internal.zzno

java - JPanel paintComponent(...) 不起作用