如果我将一个新线程对象分配给一个线程变量并运行它,而之前绑定到该变量的线程对象仍在运行,会发生什么?它会被垃圾收集和销毁吗?或者它们会并行运行吗?
这样的事情:
class ThreadExample implements Runnable {
public void run() {
// Something that runs for a long time
}
}
public class ThreadExampleMain {
public static void main(String[] args) {
// Client Code
ThreadExample e = new ThreadExample();
Thread t = new Thread(e);
t.start();
e = new ThreadExample();
t = new Thread(e);
t.start();
}
}
这会启动并行运行的两个线程还是第一个线程会停止并被垃圾回收?
答案 0 :(得分:0)
如果您谈论 Java ,那么答案是:它们将并行运行。垃圾收集与线程管理无关。
您可以使用以下示例代码查看:
public class LostThread {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
final int value = i;
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
System.out.println(value);
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
}
}
}
创建十个线程后主要完成,但它们仍在运行。