2014-06-27 31 views
0

我創建一個線程是這樣的:我應該廢止一箇中斷的線程嗎?

private Thread t = new Thread() { 
@Override 
public void run() { 
    try { 
     while(true) { 
     // do work 
     Thread.sleep(1000); 
     } 
    } catch (InterruptedException ex) { 
    } 
} 
}; 
t.start(); 

然後我就用t.interrupt()中斷。

一旦線程停止並獲得睡眠(),它會中斷並變得不可用,但將它留在記憶?

我一定打電話給t = null,或GC將採取照顧?

我試圖動態地中斷線程,並在需要時重新創建它(使用t = new Thread()),但我不知道如果只是中斷()從內存中刪除舊線程。我已經搜索,但無法找到這個特定的答案。

+0

'中斷()'只是告訴他已經被打斷,沒有「黑魔法」背後的線程。 – Smutje

回答

1

Thread類是操作系統的線程的代理。在打電話之前,start()方法沒有實際的操作系統線程和線程後停止,即使你堅持到Thread對象被清理。在這一點上,它就像任何其他物體一樣,它將以正常方式清理。

0

好像你正在使用的方法在這裏面的代碼片段從而線程t變成局部變量,它會被GC清除,只是確保你不要在方法使用該引用變量進一步下跌。

相關問題