2013-02-25 78 views
2

如果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

回答

7

假設一旦運行 方法完成後線程將被銷燬是否安全。

是的。

如何將系統資源返還給系統?

對象引用(即內存資源)將被垃圾收集。不需要採取具體行動。

完成使用後,可以在finally塊中關閉文件,DB資源。

finally { 
resource.close(); 
} 

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

+0

該問題的完美答案(+1) – asifsid88 2013-02-25 05:58:47

1

與定對象的所有系統資源被垃圾收集器釋放,因爲它認爲合適的。

儘管資源確實會被退回,但不要立即或在有限的時間內依靠它們返回,這一點非常重要。從不依靠垃圾收集器在你想要的時候做某件事。 C++中的範圍對象就是這種方式,但在java中並不如此。

某些資源可以手動釋放(通常爲obj.close()方法),如文件和套接字。