zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Thread.IsBackground 属性

属性 thread
2023-06-13 09:13:26 时间

大家好,又见面了,我是你们的朋友全栈君

net 提供了Thread类用于线程的操作。

当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的推出而退出。后台线程不妨碍程序的终止,只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。

【注意】当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。也就是说,当主线程推出的时 候,IsBackground=FALSE的线程还会继续执行下去,知道线程执行结束。只有IsBackground=TRUE的线程才会顺着主线程的推 出而退出。

static void Main(string[] args) { Thread[] trd=new Thread[2]; for (int i = 0; i < 2; i++) { trd[i]=new Thread(new ThreadStart(ThreadA)); //trd.Start(); //trd[i].IsBackground = true; } Console.WriteLine(“/n/t!! 2 mmmm!!”); trd[0].IsBackground = true;

trd[0].Start(); trd[1].Start(); //trd[1].Join(); //trd[0].Join(); return; }

public static void ThreadA() { int i = 0; Console.WriteLine(“id: “+Thread.CurrentThread.ManagedThreadId); for (; i < 10000; i++) { Console.Write(“A”); if (i > 200) { Console.WriteLine(i); return; } } Console.WriteLine(i); }

执行上面的例子可以知道,当主线程显示退出的时候,只要那些IsBackground=TRUE的线程随着主线程一起退出了,而那些IsBackground=FALSE还是需要等到自己执行完成完了之后才会退出。

当主线程不显示推出的时候,结果更是奇怪,就是代码执行到最后,主线程应该算是可以退出了。但是这时候IsBackground=FALSE的线程也不退出。也是要等到执行完成后才退出。

可见,.net中的线程应该是尽量保证所有线程都执行完了后才让整个程序退出。具体是个什么个规则就该去问微软了啊!!

转载于:https://www.cnblogs.com/vmyspace/archive/2012/01/30/2332190.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183740.html原文链接:https://javaforall.cn