Thread  创建和控制线程,设置其优先级并获取其状态

Thread构造函数接收一个无参数或带一个object类型参数的委托

                {
Console.WriteLine("********ManagedThreadId:{0} {1}********", Thread.CurrentThread.ManagedThreadId.ToString(""), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
ParameterizedThreadStart method = o => NoReturnWithParamater(o);
Thread thread = new Thread(method);
thread.Start("");//开启线程,执行委托的内容
}
{
ThreadStart method = DoSomeThing;
Thread thread = new Thread(method);
thread.Start();//开启线程,执行委托的内容
thread.Suspend();//暂停
thread.Resume();//恢复
//thread.Abort();
//线程是计算机资源,程序想停下线程,只能向操作系统通知(线程抛异常),
//会有延时/不一定能真的停下来
Thread.ResetAbort();
//1等待
while (thread.ThreadState != System.Threading.ThreadState.Stopped)
{
Thread.Sleep();//当前线程休息200ms
}
//2 Join等待
thread.Join();//运行这句代码的线程,等待thread的完成
thread.Join();//最多等待1000ms
}

线程操作

1、Start()           使线程处于Running状态,线程开始执行

2、Suspend()    挂起线程,或者如果线程已挂起,则不起作用

3、Resume()     继续执行已挂起的线程

4、Abort()、Abort(Object)     调用此方法通常会终止线程

5、ResetAbort()     取消当前线程所请求的 Abort(Object)

6、Sleep(Int32)、Sleep(TimeSpan)    将当前线程挂起指定的时间

7、Join()、Join(Int32)、Join(TimeSpan) 在继续执行程序,阻止调用线程,直到由该实例表示的线程终止或经过了指定时间为止

前后台线程

区别是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束

可以通过设置 IsBackground 属性来更改

 public static void threadMethod()
{
Thread.Sleep();
}
Thread thread = new Thread(threadMethod);
// thread.IsBackground = true;
thread.Start()

如果运行上面的代码,程序会等待3秒后退出,如果将注释去掉,将thread设成后台线程,则程序会立即退出
要注意的是,必须在调用Start方法之前设置线程的类型,否则一但线程运行,将无法改变其类型

一般通过Begin...方法运行的线程都是后台线程

线程优先级

高优先级,优先执行,但不代表优先完成  甚至说某些情况下,还有意外发生,不能通过这个来控制线程的执行先后顺序,因为操作系统不需要遵循线程的优先级,线程是计算机资源,程序操作线程,只能向操作系统通知,会有延时/不一定能真的执行

微软文档:

Thread:https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.thread?view=netframework-4.8

C# Thread 线程的更多相关文章

  1. 学习接水系统(java+thread线程)

    (一)项目框架分析 对于学生并发接水项目,根据面向对象的思想,需要创建两个对象,即学生和水龙头. 接下来主要讲解不排队接水和排队接水两张情况. 项目的目录文件如下: (二)不排队接水 假设有四个学生小 ...

  2. QT5 Thread线程

    QT5 Thread线程继承QThread方式 一.首先分析一下 QTimer Class与 Sleep()函数之间的秘密 QTimer *t = new QTimer(*parent); //创建Q ...

  3. Thread线程join方法自我理解

    Thread线程join方法自我理解 thread.join():等待thread线程运行终止,指的是main-thread(main线程)必须等待thread线程运行结束,才能继续thread.jo ...

  4. java 并发(三)---Thread 线程

    Thread 的状态 线程共有五种状态.分别是: (1)新建 (2)就绪 (3)运行 (4)阻塞 (5)死亡 ,下面列列举的状态需要结合状态示意图更好理解.  新建状态(New): 新创建了一个线程对 ...

  5. c++11中关于`std::thread`线程传参的思考

    关于std::thread线程传参的思考 最重要要记住的一点是:参数要拷贝到线程独立内存中,不管是普通类型.还是引用类型. 对于传递参数是引用类型,需要注意: 1.当指向动态变量的指针(char *) ...

  6. Thread 线程池

    Thread 线程池: 当使用多个较短存活期的线程有利时,运用线程池技术可以发挥作用.运用这一技术时,不是为每个任务创建一个全新的线程,而可以从线程池中抽出线程,并分配给任务.当线程完成任务后,再把它 ...

  7. Thread线程的基础知识及常见疑惑点

    引言 相信各位道友在平时工作中已经很少直接用到Thread线程类了,现在大多是通过线程池或者一些多线程框架来操作线程任务,但我觉得还是有必要了解清楚Thread线程类中各种方法的含义,了解了底层才能更 ...

  8. Thread线程框架学习

    原文:https://www.cnblogs.com/wangkeqin/p/9351299.html Thread线程框架 线程定义:线程可以理解为一个特立独行的函数.其存在的意义,就是并行,避免了 ...

  9. std::thread线程库详解(2)

    目录 目录 简介 最基本的锁 std::mutex 使用 方法和属性 递归锁 std::recursive_mutex 共享锁 std::shared_mutex (C++17) 带超时的锁 总结 简 ...

  10. Thread线程控制之sleep、join、setDaemon方法的用处

    Thread线程控制之sleep.join.setDaemon方法的用处 1. sleep方法 public static void sleep(long millis) throws Interru ...

随机推荐

  1. [ch04-03] 用神经网络解决线性回归问题

    系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 4.3 神经网络法 在梯度下降法中,我们简单讲述了一下神 ...

  2. VUE的中v-if和v-shou的区别

    v-if的特点:每次都会重新删除或创建元素 v-shou的特点:每次执行都只是切换了元素的display:none的属性 v-if的缺点: 每次使用都会有较高性能消耗(频繁的切换元素建议不适用,建议使 ...

  3. 基本shell脚本

    #!/bin/bash attr=() num= while true do read -p ">>input:" name attr[$num]=$name echo ...

  4. 【nodejs原理&源码赏析(2)】KOA中间件的基本运作原理

    [摘要] KOA中间件的基本运作原理 示例代码托管在:http://www.github.com/dashnowords/blogs 在中间件系统的实现上,KOA中间件通过async/await来在不 ...

  5. 写一个umi插件 自动生成代码 解放cv的双手

    引言 最近在写一个中台项目,使用的react的umi框架. 各种增删改查.基本是列表页 新建页 详情页这种页面 为了避免不必要的简单重复(主要是想偷懒) 于是想去实现自己的一个代码生成器 探索 首先, ...

  6. 在Tinymce编辑器里,集成数学公式

    在以前,需要在Web页面显示数学公式,常用的都是先制作成图片,然后插入到页面里.这使得后期对数学公式的修改变的麻烦,同时也不利于搜索引擎搜索. 本文将介绍如何在TinyMce编辑器里集成数学公式.先看 ...

  7. luogu P2650 弹幕考察

    题意简化:求某个区间在一组区间中覆盖的数量 对于这个问题,我们很容易想到线段树,或者树状数组,但是maxlongint不能让我们这么做 30分思路: 对于m个区间,枚举n个区间判断与它是否重合 但是O ...

  8. Dubbo初步

    Dubbo 介绍 : Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成.Dubbo 框架,是基于容器 ...

  9. 2018 CCPC秦皇岛 C题 Crusader Quest

    Crusaders Quest is an interesting mobile game. A mysterious witch has brought great darkness to the ...

  10. Django开发登录功能实战

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:凡夫俗子66 Django 如果是定义函数写登录路由,需要判断请求方法 ...