2014-12-03 59 views
0

我讀this question和一些文檔,我想知道如果這兩個代碼是相同的:是java方法Thread.setDaemon(true)在C#中的等價物爲Thread.IsBackground = true?

中的Java SE8:

Thread th1 = new Thread(() -> { doStuff(); });  
th1.setDaemon(true); 
th1.start(); 

在C#:

Thread th1 = new Thread(doStuff); 
th1.IsBackground = true; 
th1.Start(); 

我已經閱讀MSDN文檔,但我想知道它從框架的角度來看是相同的(垃圾收集,終結器,內存管理等)。 在這兩種情況下:th1在其父線程「死亡」後以相同的方式死亡?

MSDN提到「一個過程」,但Oracle提到「JVM本身」。這讓我感到困惑。

+0

http://msdn.microsoft.com/en-us/library/system.threading.thread.isbackground(v=vs.110).aspx – kosa 2014-12-03 22:02:40

+0

@Nambari:是的,我讀了很多那我想我需要編輯我的問題 – 2014-12-03 22:04:49

+1

JVM本身就是一個過程。每種編程語言都使用自己的術語和自己的架構,不要逐字比較。 – kosa 2014-12-03 22:09:08

回答

0

是的,它們是等效的。 From the docs

線程可以是後臺線程,也可以是前臺線程。 後臺線程與前臺線程相同,除了 後臺線程不阻止進程終止。一旦所有屬於進程的前景線程都終止,共同的 語言運行時就會結束該進程。任何剩餘的後臺線程 已停止並且未完成。

相關問題