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. Java8 格式化时间

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");LocalDateTime. ...

  2. 代码自动机(攻 ACwing 限时题)

    #include<bits/stdc++.h> #include<windows.h> using namespace std; int tot=0; void an(int ...

  3. 来看看Python炫酷的颜色输出与进度条打印

    英语单词优化 上篇文章写到了Python开发英语单词记忆工具,其中依赖了bootstrap.css jQuery.js 基础html模块以及片段的css样式.有些朋友问,怎么能将这个练习题打包成单独的 ...

  4. mysql——中文数字排序的实现(FIELD)

    今天遇到一个需求,要求排序输出网格信息,但是数据是第三方对接插入的,并没有给我们排好顺序.所以只能自己动手了. 下图是原数据: 我们需要将其升序输出.使用mysql中的函数FIELD.语法如下: SE ...

  5. Quantitative proteomics of Uukuniemi virus-host cell interactions reveals GBF1 as proviral host factor for phleboviruses(乌库涅米病毒-宿主细胞互作的定量蛋白质组学揭示了GBF1是个白蛉病毒的前病毒宿主因子)-解读人:谭亦凡

    期刊名:Molecular & Cellular Proteomics 发表时间:(2019年12月) IF:4.828 单位:1德国海德堡大学附属医院2德国汉诺威医科大学3德国亥姆霍茲感染研 ...

  6. Spring MVC上传文件原理和resolveLazily说明

    问题:使用Spring MVC上传大文件,发现从页面提交,到进入后台controller,时间很长.怀疑是文件上传完成后,才进入.由于在HTTP首部自定义了“Token”字段用于权限校验,Token的 ...

  7. 洛谷 CF402A Nuts 题解

    本蒟蒻又来发题解啦! 这题是个紫题? 好吧,恶意评分可海星? 回到正题 这题很明显是贪心啊: 有a个坚果,b个隔板,x个隔板,最多分成v个区间. 那么我们的贪心策略是: 如果一共使用的挡板小于x,且当 ...

  8. mac os 搭建私有DNS 之 dnsmasq

    - MAC OS 创建私有DNS 仓库 - 使用场景 实际工作中有一些私有的域名需要修改host才可以访问 例如:localhost.dev develop-test.dev - 安装方法 brew ...

  9. luogu P2401 不等数列 |动态规划

    题目描述 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入">"和"<".问在所有排列中,有多少个排列恰好有k个"< ...

  10. python之pymysql模块简单应用

    众所周知,想要在python程序中执行SQL语句需要使用第三方模块:pymysql. 下面,我将为大家简述一下pymysql第三方库的安装到使用的大体流程. pymysql的安装 1.windows系 ...