我一直在四处寻找,我真的没有找到答案。我知道自己停止线程是一种好习惯,但我一直想知道当我忘记阻止它们时会发生什么。如果我创建一个新线程并让它运行一些任务,那么当任务完成时线程会发生什么?例如,在这种情况下线程会发生什么:
Thread t = new Thread(new Runnable(){
public void run() {
for (int i = 0;i<10;i++){
foo;
}
}
});
t.start();
线程是否会自动停止,它是否会不断耗尽资源,还是会做其他事情?
答案 0 :(得分:4)
当run方法结束时,线程将停止。在你的例子中,这将是for循环的10次迭代之后,假设foo没有阻塞。如果没有对该线程的更多引用,那么它将被JVM垃圾收集。
答案 1 :(得分:2)
当run()
完成时,线程结束,是的。如果这就是你的意思,那么stop()
一个主题是不的好习惯。
答案 2 :(得分:0)
如果不是守护进程,则在完成任务后它不会消耗所有资源。