java方法Thread.setDaemon(true)是C#中的等效于Thread.IsBackground = true吗?

时间:2014-12-03 22:00:48

标签: java c# multithreading

我阅读了this question和一些文档,我想知道这两个代码是否相同:

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在其父线程"死亡之后以相同的方式死亡&#34 ;?

MSDN提及"流程",但Oracle提及" JVM本身"。这让我很困惑。

1 个答案:

答案 0 :(得分:0)

是的,它们是等价的。 From the docs

  

线程是后台线程或前台线程。   后台线程与前台线程相同,除外   后台线程不会阻止进程终止。一旦完成   属于某个进程的前台线程已经终止,这是常见的   语言运行时结束进程。任何剩余的后台线程   停止了,没有完成。