Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java方法Thread.setDaemon(true)在C中是否等同于Thread.IsBackground=true?_Java_C#_Multithreading - Fatal编程技术网

java方法Thread.setDaemon(true)在C中是否等同于Thread.IsBackground=true?

java方法Thread.setDaemon(true)在C中是否等同于Thread.IsBackground=true?,java,c#,multithreading,Java,C#,Multithreading,我阅读了一些文档,我想知道这两个代码是否等效: 在JavaSE8中: Thread th1 = new Thread(() -> { doStuff(); }); th1.setDaemon(true); th1.start(); 在C中: 我已经阅读了MSDN文档,但我想知道,从框架的角度来看,它们是等效的:垃圾收集、终结器、内存管理等等。 在这两种情况下:th1在其父线程死亡后以相同的方式死亡 MSDN提到了一个进程,但Oracle提到了JVM本身。这就是让我困惑的地方

我阅读了一些文档,我想知道这两个代码是否等效:

在JavaSE8中:

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

我已经阅读了MSDN文档,但我想知道,从框架的角度来看,它们是等效的:垃圾收集、终结器、内存管理等等。 在这两种情况下:th1在其父线程死亡后以相同的方式死亡


MSDN提到了一个进程,但Oracle提到了JVM本身。这就是让我困惑的地方。

是的,它们是等价的

线程可以是背景线程,也可以是前景线程。 背景线程与前景线程相同,只是 后台线程不阻止进程终止。一劳永逸 属于进程的前台线程已终止,公共 语言运行库结束该过程。任何剩余的后台线程 已停止且未完成


@南巴里:是的,我读了很多,我想我需要编辑我的问题,JVM本身就是一个过程。每种编程语言都使用自己的术语和体系结构,不要逐字比较…在其父线程死后?。。。我不了解.NET,但在Java中,线程之间没有父/子关系。如果线程P创建了线程C,这可能对应用程序有意义,但对JVM没有任何意义。@james large:oops,正如Nambari所说:这完全是行话。在.Net中,通常说线程P是父线程,线程C是子线程。我发现了这个有趣的信息
 Thread th1 = new Thread(doStuff);
 th1.IsBackground = true;
 th1.Start();