线程是否自杀或停止运行

问题描述:

线程何时会停止运行并停止存在?打印号码10后会立即停止运行吗?打印后立即可用于垃圾回收10?或者我必须明确地打断它或者什么?线程是否自杀或停止运行

Runnable counter = new Runnable() { 
    @Override 
    public void run() { 
    for (int i =0; i<=10; i++) { 
     System.out.println(i); 
    } 
    } 
}; 
new Thread(counter).start(); 
+0

你不应该打断任何事情。在你的情况下,一旦'run'方法完成执行,线程退出。 – Maroun 2013-05-02 21:15:42

+0

run()的结尾与main()不一样,这与调用'System.exit()'非常相似。 – 2013-05-02 23:33:26

线程没有犯自杀。它只是终止或被中止(比如被杀)。

有是证明一个如此残酷的术语的用途的一个重要因素,,过程和线程:他们的状态不会被保存,交易的完整性没有直接担保,除非你有另一种机制。

在你的情况下,线程将简单地从1到10打印并终止,下一次GC运行时将被垃圾回收。

没有更多。

+1

是的,与他们“自杀”相比,他们被“谋杀”更加类似于他们“为了自杀” – drewmoore 2013-05-02 21:16:29

+1

为什么不*平安地收集*? :D – Maroun 2013-05-02 21:17:16

+0

@Stallman请将其作为问题发布,我们很乐意回答正确的文本空间 – 2014-10-01 07:13:09