C# Thread IsBackground 前后台线程

Thread 区别前后台线程属性IsBackground

1、  创建一个线程默认是前台线程,即IsBackground=true

2、  主线程的结束会关联前台线程,前台线程会阻止主进程的结束,需等待前台线程完成。

3、  主进程结束时后台线程也会结束,即使没有执行完成也会被中断。

static void Main(string[] args)        {            BackgroundTest shortTest = new BackgroundTest(50);            Thread foregroundThread =                new Thread(new ThreadStart(shortTest.RunLoop));            foregroundThread.Name = "ForegroundThread";            BackgroundTest longTest = new BackgroundTest(100);            Thread backgroundThread =                new Thread(new ThreadStart(longTest.RunLoop));            backgroundThread.Name = "BackgroundThread";            backgroundThread.IsBackground = true;            foregroundThread.Start();            backgroundThread.Start();
Task.Factory.StartNew(() =>            {                Thread.CurrentThread.Name = "Task Thread";                Thread.CurrentThread.IsBackground = false; //设置为前台线程                new BackgroundTest(50).RunLoop();            });
//回车结束主线程,如果有前台线程在运行是无法结束的,(后台线程就会被终止,不会执行完成)            Console.ReadLine();        }        class BackgroundTest        {            int maxIterations;            public BackgroundTest(int maxIterations)            {                this.maxIterations = maxIterations;            }            public void RunLoop()            {                String threadName = Thread.CurrentThread.Name;                for (int i = 0; i < maxIterations; i++)                {                    Console.WriteLine("{0} count: {1}",                        threadName, i.ToString());                    Thread.Sleep(250);                }                Console.WriteLine("{0} finished counting.", threadName);            }        }
(0)

相关推荐

  • C#跨线程操作控件

    C#跨线程操作控件

  • 台北电脑展重磅信息:AMD或发布Zen3线程撕裂者

    受全球疫情影响,诸如台北电脑展(Computex)等一年一度的科技盛会继续选择线上举办形式.但被视为下半年科技领域风向标的台北电脑展总会释放出上游芯片厂商的产品布局/策略与各大PC厂商的新品动态.首波 ...

  • 8核16线程的酷睿H35升级版?还是H45要来了!

    今年四月英特尔完成酷睿十一代桌面产品的发布,或受全球芯片产能影响目前产品还未大面积上架电商.相比之下,内嵌高性能移动版H35处理器的笔记本机型已经全面开售,目前还有更高性能的H35升级版系列曝光,最高 ...

  • 老问题:Android子线程中更新UI的3种方法

    在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 方法一:用Handler 1.主线程中定义Handler: Handle ...

  • 【竺】性能测试笔记5——JVisualVM监控线程耗费cpu

    一.问题现象 前段时间,压测遇到一个问题,在压测的时候,tps波动很频繁. 二.监控 使用xshell远程连接到应用服务器,通过top命令看了下服务器资源情况,cpu波动也很频繁,其它服务器都正常. ...

  • 如何合理地估算线程池大小?

    这个问题虽然看起来很小,却并不那么容易回答. 大家如果有更好的方法欢迎赐教,先来一个天真的估算方法: 假设要求一个系统的TPS(Transaction Per Second或者Task Per Sec ...

  • Java 线程基础

    本文部分摘自<Java 并发编程的艺术> 线程简介 1. 什么是线程? 现代操作系统在运行一个程序时,会为其创建一个进程,一个进程里可以创建多个线程.现代操作系统调度的最小单元是线程,也叫 ...

  • 从构造函数看线程安全

    线程是编程中常用而且强大的手段,在使用过程中,我们经常面对的就是线程安全问题了.对于Java中常见的数据结构而言,一般的,ArrayList是非线程安全的,Vector是线程安全的:HashMap是非 ...

  • 【JAVA并发第三篇】线程间通信

    线程间的通信 JVM在运行时会将自己管理的内存区域,划分为不同的数据区,称为运行时数据区.每个线程都有自己私有的内存空间,如下图示: Java线程按照自己虚拟机栈中的方法代码一步一步的执行下去,在这一 ...

  • 进程与线程的一个简单解释

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂. 1. 计算机的核心是CPU,它 ...