如果有一个使用以下代码实现可运行类的类:
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/