前台线程和后台线程的区别和联系:
1、后台线程不会阻止进程的终止。属于某个进程的所有前台线程都终止后,该进程就会被终止。所有剩余的后台线程都会停止且不会完成。
2、可以在任何时候将前台线程修改为后台线程,方式是设置Thread.IsBackground 属性。
3、不管是前台线程还是后台线程,如果线程内出现了异常,都会导致进程的终止。
4、托管线程池中的线程都是后台线程,使用new Thread方式创建的线程默认都是前台线程。
下面做个小例子来证实一下,代码如下很简单:
class Program { static AutoResetEvent autoEvent =new AutoResetEvent(false); staticvoid Main() { Thread newThread =new Thread(new ThreadStart(ThreadMethod)); //newThread.IsBackground = true; Console.WriteLine("主线程开始执行。"); newThread.Start(); Console.WriteLine("主线程结束"); } staticvoid ThreadMethod() { //挂起子线程 autoEvent.WaitOne(); Console.WriteLine("子线程执行"); } }
我在第9行下了个断点,来看一下通过 new Thread方式创建的线程的IsBackground属性,截图如下:
可见通过new Thread方式创建的线程,确实是默认为前台线程。
程序运行的结果如下图:
该控制太程序没有像平时一样自动关闭,而使一直停在那里。并且我们从图中可以看到主线程执行完了,而子线程(前台线程)并没有执行完(因为被autoEvent.WaitOne()方法挂起了)。
这就说明了前台线程是可以阻止进程的终止的。
如果将第8行的注释去掉的话,控制台程序将自动终止,大家可以试一下。
本文向大家介绍iOS线程与进程的区别和联系? 相关面试题,主要包含被问及iOS线程与进程的区别和联系? 时的应答技巧和注意事项,需要的朋友参考一下 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。 程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同
本文向大家介绍Android后台线程和UI线程通讯实例,包括了Android后台线程和UI线程通讯实例的使用技巧和注意事项,需要的朋友参考一下 本节向你展示如何在任务中发送数据给UI线程里的对象,这个特性允许你在后台线程工作,完了在UI线程展示结果。 在UI线程定义一个Handler Handler是Android系统线程管理框架里的一部分。一个Handler对象接收消息,并且运行代码来处理消息。
本文向大家介绍如何在C#中检查线程是否为后台线程,包括了如何在C#中检查线程是否为后台线程的使用技巧和注意事项,需要的朋友参考一下 要检查线程是否是后台线程,代码如下: 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-
[1]“多线程和异步编程的区别”
本文向大家介绍Linux中进程和线程的对比与区别,包括了Linux中进程和线程的对比与区别的使用技巧和注意事项,需要的朋友参考一下 Linux中进程和线程的对比与区别 1.概念 进程:正在运行中的程序。 线程:进程中的一条执行路径。 2.区别 (1)通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和