在运行方法中没有循环的Java线程

问题描述:

如果Java线程在其运行方法中没有循环,那么假设在运行方法完成后线程将被销毁是安全的。让我们考虑下面的代码,在运行方法中没有循环的Java线程

Thread t = new Thread(){ 
    public void run(){ 
     System.out.print("Hello World!"); 
    } 
}; 

t.start(); 

在上面的例子中,一旦run方法结束,我该如何将系统资源返回给系统?

+5

你是什么意思与系统资源? – 2013-02-25 05:37:14

+0

内存和CPU。 – user1917209 2013-02-25 05:41:15

+0

当程序退出'main()'方法时,如何确保系统资源(内存和CPU)返回? – Apurv 2013-02-25 05:59:17

假设一旦运行 方法完成后线程将被销毁是否安全。

是的。

如何将系统资源返还给系统?

对象引用(即内存资源)将被垃圾收集。不需要采取具体行动。

完成使用后,可以在finally块中关闭文件,DB资源。

finally { 
resource.close(); 
} 

您也可以使用新的try with resources在Java 7中

+0

该问题的完美答案(+1) – asifsid88 2013-02-25 05:58:47

与定对象的所有系统资源被垃圾收集器释放,因为它认为合适的。

尽管资源确实会被退回,但不要立即或在有限的时间内依靠它们返回,这一点非常重要。从不依靠垃圾收集器在你想要的时候做某件事。 C++中的范围对象就是这种方式,但在java中并不如此。

某些资源可以手动释放(通常为obj.close()方法),如文件和套接字。