我阅读了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本身"。这让我很困惑。
答案 0 :(得分:0)
是的,它们是等价的。 From the docs
线程是后台线程或前台线程。 后台线程与前台线程相同,除外 后台线程不会阻止进程终止。一旦完成 属于某个进程的前台线程已经终止,这是常见的 语言运行时结束进程。任何剩余的后台线程 停止了,没有完成。