真理的基本的属性是_thread和handler区别

真理的基本的属性是_thread和handler区别原文地址:http://blog.csdn.net/luckeryin/article/details/5649144C#中,Thread类有一个IsBackground的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程。个人感觉这样的解释等于没有解释..Net中的线程,可以分为后台线程和前台线程。后台线程与前台线程并没有本质的区别,它们之间唯一

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

原文地址:http://blog.csdn.net/luckeryin/article/details/5649144

C#中,Thread类有一个IsBackground 的属性.MSDN上对它的解释是:获取或设置一个值,该值指示某个线程是否为后台线程。个人感觉这样的解释等于没有解释.

.Net中的线程,可以分为后台线程和前台线程。后台线程与前台线程并没有本质的区别,它们之间唯一的区别就是:后台线程不会防止应用程序的进程被终止掉。呵呵,这句话读出来好像并不那么好懂.其实,说白了就是当前台线程都结束了的时候,整个程序也就结束了,即使还有后台线程正在运行,此时,所有剩余的后台线程都会被停止且不会完成.但是,只要还有一个前台线程没有结束,那么它将阻止程序结束.这就是为什么有些设计不够完美的WinForm程序,在某种特定的情况下,即使所有的窗口都关闭了,但是在任务管理器的管理列表里仍然可以找到该程序的进程,仍然在消耗着CPU和内存资源.因此,在WinForm程序中,关闭所有窗口前,应该停止所有前台线程,千万不要遗忘了某个前台线程.应用程序进程的存亡由前台线程决定而于后台线程无关.这就是它们的区别.

知道了前后台线程的区别,就应该知道如何声明IsBackgroud属性的值了.

值得说明的一点是:改变线程从前台到后台不会以任何方式改变它在CPU协调程序中的优先级和状态。因为前台后线程与程序进程的优先级无关.

结束前摘录MSDN上一段示例码,以帮助大家便好的理解这一区别:

下面的代码示例对比了前台线程与后台线程的行为。创建一个前台线程和一个后台线程。前台线程使进程保持运行,直到它完成它的 while 循环。前台线程完成后,进程在后台线程完成它的 while 循环之前终止。

using System;
using System.Threading;

class Test
{
    static void Main()
    {
        BackgroundTest shortTest = new BackgroundTest(10);
        Thread foregroundThread = 
            new Thread(new ThreadStart(shortTest.RunLoop));
        foregroundThread.Name = "ForegroundThread";

        BackgroundTest longTest = new BackgroundTest(50);
        Thread backgroundThread = 
            new Thread(new ThreadStart(longTest.RunLoop));
        backgroundThread.Name = "BackgroundThread";
        backgroundThread.IsBackground = true;

        foregroundThread.Start();
        backgroundThread.Start();
    }
}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php 0xffffffff,[已解决]怎么随机出0xFF000000 – 0xFFFFFFFF 之间的数?

    php 0xffffffff,[已解决]怎么随机出0xFF000000 – 0xFFFFFFFF 之间的数?importwin.ui;importgdip;//导入GDI+库importmath;/*DSG{{*/varwinform=..win.form(bottom=399;parent=…;right=599;text=”aardioForm”)winform.add(button={bottom=363;text=”button”;left=423;top=318;z=1…

    2022年5月17日
    42
  • arcgis入门到精通视频教程下载连接[通俗易懂]

    arcgis入门到精通视频教程下载连接[通俗易懂]04空间数据Coverage的创建.wmv05空间数据Geodatabase数据库创建.wmv06空间可视化工具ArcMap.wmv07空间数据编辑.avi08空间数据的转换.wmv09空间数据的处理.wmv10空与制图间数据的可视化.wmv11空间分析工具.wmv12ArcGIS矢量数据的空间分析.wmv13Arcgis栅格数据的空间分析.wmv14-1ArcGIS三维分析.

    2022年6月15日
    33
  • Course Selection CodeChef – RIN

    Course Selection CodeChef – RIN

    2022年3月2日
    45
  • 操作系统期末总复习(题库)[通俗易懂]

    操作系统期末总复习(题库)[通俗易懂]问答题什么是操作系统,主要功能有哪些?操作系统:计算机最基本最重要的基础性系统软件,可以使计算机系统能协调、高效和可靠地进行工作主要功能:处理器管理、存储器管理、设备管理、文件管理、作业管理等功能模块什么是微内核技术,主要有哪些功能?微内核技术把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。主要功能:进程(线程)管理、低级存储器管理、中断和陷入处理等功能。简述进程的基本状态及状态之间的转换

    2022年6月1日
    224
  • java实现文件传输

    java实现文件传输

    2021年12月7日
    52
  • 比较好用的mysql可视化工具—–pycharm连接mysql图文教程

    比较好用的mysql可视化工具—–pycharm连接mysql图文教程1.mysql可视化工具常用的mysql可视化工具有很多,如:sqlyog、navicat等等,使用这些工具需要另外安装,有的还可能收费。这里推荐一个比较容易被大家忽略的mysql可视化工具,大多数学python的人,都会使用pycharm,不得不说pycharm的功能及其强大,pycharm本身也是一个功能很强的数据库可视化工具,换句话说,如果安装了pyharm,那根本没必要在安装其他可视化工具了!这里以pycharm链接mysql为例,记录一下详细过程,供大家参考!2.使用工具我使用的工具如下

    2022年8月27日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号