如果有一个使用以下代码实现可运行类的类:

public class MyRunnable implements Runnable {
    public Thread t;
    // Other variables;

    public MyRunnable() {
        t = new Thread(this, "MyRunnable Thread");
        // Initialise other variables.
    }

    public void run() {
       //Do something.
    }
}


我以以下方式制作上述类的实例:

public class MyFunc () {
  satic void main (String ards[]) {
     MyRunnable mr = new MyRunnable();
     mr.t.start();


     while (true) {
         Thread.sleep(10000);
         if (!mr.isAlive()) {
              //Execute mr again.
              // How to do it ?
         }
     }
  }
}


我该怎么办?

我有两种想法,但不确定哪一种是正确的:

1. mr.t.start();

2. MyRunnable mr = new MyRunnable();
        mr.t.start();

我应该重新创建先生先生吗?

还是我应该与现有实例或先生一起工作?

最佳答案

Thread中删除​​对MyRunnable的引用。

在Java中启动线程成语看起来像这样

new Thread(new MyRunnable()).start()


垃圾收集的一般规则适用于清理可运行对象。如果没有可运行的对象引用,则可能会对其进行垃圾回收。

关于java - 当线程在Java中退出时,可运行类的实例是否被破坏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16981190/

10-12 03:43